美文网首页
Android clipToPadding和clipChildr

Android clipToPadding和clipChildr

作者: 路漫漫其修远兮归四方 | 来源:发表于2020-07-12 20:56 被阅读0次

属性说明

属性 说明
android:clipChildren clipChildren表示是否限制子View在其范围内,在animations动画以及APP主界面底部导航栏中发挥很大的作用, 默认情况下,clipChild为true。 也就是不允许进行扩展绘制。那么视图的显示就会受到限制。我们将其值设置为false后,当子控件的高度高于父控件时也会完全显示,而不会被压缩
android:clipToPadding clipToPadding用来定义ViewGroup是否允许在padding中绘制。默认情况下,cliptopadding被设置为ture, 也就是把padding中的值都进行裁切了,如图片超出边界后被裁剪

效果展示

查看android:clipChildren效果

直接修改android:clipChildren属性的boolean值,就能进行测试

布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clipChildren="false"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_alignParentBottom="true"
        android:background="@color/colorAccent">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="100dp"
            android:layout_gravity="bottom"
            android:background="@color/colorPrimary"
            android:gravity="center"
            android:text="Hello World!" />
    </LinearLayout>

</RelativeLayout>
android:clipChildren = true android:clipChildren = false
true.png false.png

由上图简单得知,我们知道了android:clipChildren 属性的功能。
总结:
①.android:clipChildren默认值为为true,且android:clipChildren属性需要设置在根布局当中,否则不生效。
②.需要实现上述效果,子布局的高度需要大于父布局,且他们的高度都是固定的。

查看clipToPadding效果

当我们测试clipToPadding属性效果时,我们使用ViewPager写一个简单Demo来进行测试(比较直观)。

Demo代码
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ViewPager viewPager = findViewById(R.id.viewPager);
        viewPager.setAdapter(new ViewPagerAdapter());

    }

    private static class ViewPagerAdapter extends PagerAdapter {

        @Override
        public int getCount() {
            return 5;
        }

        @NonNull
        @Override
        public Object instantiateItem(@NonNull ViewGroup container, int position) {
            TextView tv = new TextView(container.getContext());
            tv.setGravity(Gravity.CENTER);
            tv.setBackgroundColor(getPosColor(position % 3));
            tv.setTextSize(30);
            tv.setText(String.format("第%d页", position));
            // 添加到ViewPager容器
            container.addView(tv);
            // 返回填充的View对象
            return tv;
        }

        @Override
        public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
            return view == object;
        }

        @Override
        public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
            container.removeView((View) object);
        }
    }

    private static @ColorInt
    int getPosColor(int pos) {
        switch (pos) {
            case 0:
                return Color.RED;
            case 1:
                return Color.GREEN;
            case 2:
                return Color.BLUE;
        }
        return Color.GRAY;
    }
}
布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <androidx.viewpager.widget.ViewPager
        android:id="@+id/viewPager"
        android:clipToPadding="false"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:paddingStart="40dp"
        android:paddingEnd="40dp" />

</RelativeLayout>
效果图
android:clipToPadding = true android:clipToPadding = false
b.png a.png

总结:
正如clipToPadding属性描述所说,cliptopadding为false的时候,允许在padding区域绘制。

相关文章

网友评论

      本文标题:Android clipToPadding和clipChildr

      本文链接:https://www.haomeiwen.com/subject/oxencktx.html