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的图层都是可操作图层。
更多相关文章
- Android之GPU过度绘制与图形渲染优化——Hierarchyviewer时间不
- Android(安卓)开机如何跨过Luancher界面直接显示定制的app?
- Android(安卓)仿Iphone文件夹分裂效果
- 关于android 4.2版本后的多用户目录结构分析(二)- /storage/sdcard
- Android控件组合应用一
- Android(安卓)Butterknife 框架源码解析(1)——ButterKnife的使用
- 边做iOS边学Android(二):认识几个常用的控件
- android listview选中某一行,成选中状态颜色高亮显示,ListView的U
- 一起来学习Android自定义控件1