clipToPadding 和clipChildren 的区别
clipToPadding 如果为false意思是,view内部的padding区也可以显示view。
clipChildren 如果为false意思是,布局内部的子view即使出了布局的边界,也可以显示出子view界面。
所以clipToPadding 控制的是view内部。clipChildren 控制的是界面外部。
它们两个默认都是true。
用他们可以做什么?
比如用clipChildren可以简单的实现如下效果:
注意:子view所在的父view都需要设置clipChildren为false
clipToPadding可以应用到哪?
如上图所示,中间完全显示,两边只显示一部分,那么用Viewpager我们怎么做到呢?
使用clipToPadding到false,然后设置padding就可以实现了。
代码如下:
// Disable clip to padding
viewPager.setClipToPadding(false);
// set padding manually, the more you set the padding the more you see of prev & next page
viewPager.setPadding(40, 0, 40, 0);
// sets a margin b/w individual pages to ensure that there is a gap b/w them
viewPager.setPageMargin(20);
当然上面的效果也可以用clipChildren属性来实现,但是用这个属性,在左右显示出的两页上面触摸滑动的时候,就没有作用(当然也可以解决,但是没有上面的方法简单)。
实现代码如下:
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipChildren="false"
android:layout_alignParentBottom="true">
<ViewPager
android:layout_width="match_parent"
android:layout_height="92dp"
android:layout_gravity="bottom|center_horizontal"
android:layout_marginBottom="20dp"
android:background="@color/transparent"
android:clipChildren="false" />
</FrameLayout>
ViewGroup.LayoutParams layoutParams = mViewPager.getLayoutParams();
layoutParams.width = PhoneUtil.getScreenWidth(mContext) - PhoneUtil.dip2px(mContext, 80);
mViewPager.setLayoutParams(layoutParams);