来自ViewGroup中的属性clipChildren
用于定义一个子元素是否被限制在其父元素中进行绘制。通常用于动画效果中绘制需要超出原有尺寸限制的元素时使用。在这种情况下,需要将该属性值设置为false
以确保该元素可以超出边界。缺省值为true
,也即子元素不可以超出父元素的边界。
需要重点注意的是,属性值
clipChildren
需要被设置到爷爷节点上。
以下为布局的示例:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:clipChildren="false"
android:orientation="vertical">
<View
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="48dp"
android:orientation="horizontal">
<ImageView
android:src="@drawable/ic_launcher"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"/>
<ImageView
android:src="@drawable/ic_launcher"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"/>
<ImageView
android:src="@drawable/ic_launcher"
android:layout_width="0dp"
android:layout_height="96dp"
android:layout_gravity="bottom"
android:layout_weight="2"/>
<ImageView
android:src="@drawable/ic_launcher"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"/>
<ImageView
android:src="@drawable/ic_launcher"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"/>
</LinearLayout>
</LinearLayout>
重点关注根节点的属性android:clipChildren="false"
和第三个ImageView
的属性android:layout_gravity="bottom"
,最终效果如下所示:
而去除第三个ImageView
的属性android:layout_gravity="bottom"
后的效果为:
可以看到,默认顶部对齐,最终只显示了一部分。
只去除根节点的属性android:clipChildren="false"
后显示如下:
三张图片对比,可以很容易看出该属性值的作用。