clipToPadding 和clipChildren 的区别

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);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值