属性说明
属性 | 说明 |
---|---|
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区域绘制。
网友评论