Android 随笔——android:clipChildren="false"属性

之前笔者认为一个View的显示必须在Parent的mesure以及layout范围内,超出那个部分Canvas就会失效,而最近笔者做ViewPager,要实现中间完全显示两边部分显示时完全刷新了笔者的认识。

ViewPager的内部机制

ViewPager控件的Left对应的值永远是0,Right永远是1, 完整的一个滑动过程就从X-0,或者从0-X。如果要中间显示那么ViewPager必然要发生向右的偏移,那么使用 android:layout_marginLeft=”“这个属性。然而虽然使得中间的图片确实能中心显示但是这只是改变了控件了Left所以左边图片仍然不能显示,经过百度的指导后发现要使用android:clipChildren属性,这属性什么意思呢? 就是超过控件范围的Drawable仍然显示!! 在ViewPager以及其Parent都设置该属性后确实目标实现了。

个人理解

android:clipChildren=”false”只是提供了父容器对Child的一种渲染,仅此而已。不会对Child的任何属性产生任何影响,也不会发生遮挡问题。

src与background

background:
当我们设置一个ImageView的background时发现这个图形是保持完整填充控件的,所以该方式只在控件所在区域,用了上述参数也不能发生偏移。

src:
在控件的Canvas上画一个东西,与backgroud不在一个图层,所以这个图层比较随意我们可以自定义填充方式等等…..所以支持android:clipChildren=”false”属性。

偏移可操作图层

 imageView.scrollBy(500,0);    //scrollTo()

调用这个方法使得可操作图层发生偏移.。怎么算可操作图层? 一般除过background外,其余可以设置Drawable的图层都是可操作图层。

猜你喜欢

转载自blog.csdn.net/qq_36043263/article/details/80292752