bingoogolapple.github.io
bingoogolapple.github.io copied to clipboard
clipChildren 与 clipToPadding
代码 | 效果 |
---|---|
![]() |
![]() |
- clipChildren 和 clipToPadding 都是 ViewGroup 的属性,默认值都为 true。子控件既不能显示在父控件 padding 区域,也不能超出父控件本身区域
代码 | 效果 |
---|---|
![]() |
![]() |
- 子控件大于父控件除去 padding 以外的区域时
- clipToPadding 设置为 false 时,子控件能显示在父控件的 padding 区域中,但不能超出父控件自身区域
代码 | 效果 |
---|---|
![]() |
![]() |
- 孙子控件大于子控件时(并且子控件没有设置 padding,或者子控件设置了 clipToPadding 为 false)
- 爷爷控件的 clipChildren 设置为 false 时,孙子控件能超出子控件自身区域,但不能显示在爷爷控件的 padding 区域中
代码 | 效果 |
---|---|
![]() |
![]() |
- 孙子控件大于子控件时(并且子控件没有设置 padding,或者子控件设置了 clipToPadding 为 false)
- 爷爷控件的 clipChildren 设置为 false 时,孙子控件能超出子控件自身区域,但不能显示在爷爷控件的 padding 区域中
- 如果还要能显示在爷爷控件的 padding 区域中,需要将爷爷控件的 clipPadding 设置为 false
- 爷爷控件的 clipChildren 设置为 false 时,孙子控件能超出子控件自身区域,但不能显示在爷爷控件的 padding 区域中
代码 | 效果 |
---|---|
![]() |
![]() |
- 以此类推,如果要超出爷爷控件自身区域,还需要设置爷爷的爸爸的 clipChildren 为 false
代码 | 效果 |
---|---|
![]() |
![]() |
- 如果子控件的宽高小于父容器,可以配个 clipChildren、clipPadding,通过给父容器(如果怕影响之前的布局,可以给子控件单独套一层父控件)添加 paddingTop、paddingBotton、paddingLeft(不能用 paddingStart)、paddingRight(不能用 paddingEnd)或给子容器提那家 layout_marginTop、layout_marginBottom、layout_marginLeft、layout_marginStart、layout_marginRight、layout_marginEnd 来让子控件跑到父控件的外部
- 对应的方向和父容器的关系,否则该方向设置为负数时不会生效