bingoogolapple.github.io icon indicating copy to clipboard operation
bingoogolapple.github.io copied to clipboard

clipChildren 与 clipToPadding

Open bingoogolapple opened this issue 8 years ago • 5 comments

代码 效果
image image

  • clipChildren 和 clipToPadding 都是 ViewGroup 的属性,默认值都为 true。子控件既不能显示在父控件 padding 区域,也不能超出父控件本身区域

bingoogolapple avatar Aug 04 '16 08:08 bingoogolapple

代码 效果
image image

  • 子控件大于父控件除去 padding 以外的区域时
    • clipToPadding 设置为 false 时,子控件能显示在父控件的 padding 区域中,但不能超出父控件自身区域

bingoogolapple avatar Mar 22 '18 01:03 bingoogolapple

代码 效果
image image

  • 孙子控件大于子控件时(并且子控件没有设置 padding,或者子控件设置了 clipToPadding 为 false)
    • 爷爷控件的 clipChildren 设置为 false 时,孙子控件能超出子控件自身区域,但不能显示在爷爷控件的 padding 区域中

bingoogolapple avatar Mar 22 '18 01:03 bingoogolapple

代码 效果
image image

  • 孙子控件大于子控件时(并且子控件没有设置 padding,或者子控件设置了 clipToPadding 为 false)
    • 爷爷控件的 clipChildren 设置为 false 时,孙子控件能超出子控件自身区域,但不能显示在爷爷控件的 padding 区域中
      • 如果还要能显示在爷爷控件的 padding 区域中,需要将爷爷控件的 clipPadding 设置为 false

bingoogolapple avatar Mar 22 '18 01:03 bingoogolapple

代码 效果
image image

  • 以此类推,如果要超出爷爷控件自身区域,还需要设置爷爷的爸爸的 clipChildren 为 false

bingoogolapple avatar Mar 22 '18 01:03 bingoogolapple

代码 效果
image image

  • 如果子控件的宽高小于父容器,可以配个 clipChildren、clipPadding,通过给父容器(如果怕影响之前的布局,可以给子控件单独套一层父控件)添加 paddingTop、paddingBotton、paddingLeft(不能用 paddingStart)、paddingRight(不能用 paddingEnd)或给子容器提那家 layout_marginTop、layout_marginBottom、layout_marginLeft、layout_marginStart、layout_marginRight、layout_marginEnd 来让子控件跑到父控件的外部
  • 对应的方向和父容器的关系,否则该方向设置为负数时不会生效

bingoogolapple avatar Mar 22 '18 02:03 bingoogolapple