clipChildren的意思是 是否限制子View在其范围内,默认为true。
常规原因
- clipChildren属性需要设置在祖父组件中,即父组件的父组件。
- 需要解除绘制限制的View需要通过android:layout_gravity="" 来设置超出部分如何显示。常用设置Bottom。
自身项目中设置该属性无效的原因
- 在ViewGroup里设置了padding属性
解决办法:
- 删除不必要的padding属性
- 如果padding属性为必须,则需要在设置了padding属性的viewgroup里设置属性 android:clipToPadding="false"
原代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipChildren="false">
<RadioGroup
android:id="@+id/menu_group"
android:layout_width="match_parent"
android:layout_height="55dp"
android:layout_alignParentBottom="true"
android:background="@color/fontWhite"
android:gravity="bottom"
android:orientation="horizontal"
android:paddingTop="4dp"
android:paddingBottom="4dp"
android:visibility="visible">
<RadioButton
android:id="@+id/radio_0"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="@null"
android:button="@null"
android:checked="true"
android:drawableTop="@drawable/select_tab_0"
android:gravity="center"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:text="@string/lab_tab_home"
android:textColor="@color/select_menu_txt"
android:textSize="12sp" />
<RadioButton
android:id="@+id/radio_1"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="@null"
android:button="@null"
android:drawableTop="@drawable/select_tab_1"
android:gravity="center"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:text="@string/lab_tab_discover"
android:textColor="@color/select_menu_txt"
android:textSize="12sp" />
<RadioButton
android:id="@+id/radio_4"
android:layout_width="0dp"
android:layout_height="90dp"
android:layout_gravity="bottom"
android:layout_weight="1"
android:background="@null"
android:button="@null"
android:drawableTop="@mipmap/icon_march"
android:drawablePadding="-15dp"
android:gravity="center"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:text="@string/tab_matching"
android:textColor="@color/select_menu_txt"
android:textSize="12sp" />
<RadioButton
android:id="@+id/radio_2"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="@null"
android:button="@null"
android:drawableTop="@drawable/select_tab_2"
android:gravity="center"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:text="@string/lab_tab_chats"
android:textColor="@color/select_menu_txt"
android:textSize="12sp" />
<RadioButton
android:id="@+id/radio_3"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="@null"
android:button="@null"
android:drawableTop="@drawable/select_tab_3"
android:gravity="center"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:text="@string/lab_tab_my"
android:textColor="@color/select_menu_txt"
android:textSize="12sp" />
</RadioGroup
</RelativeLayout>
此代码严格按照上述2点要求写的,但实际情况并没要达到想要的效果。
修改后代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipChildren="false">
<RadioGroup
android:id="@+id/menu_group"
android:layout_width="match_parent"
android:layout_height="55dp"
android:layout_alignParentBottom="true"
android:background="@color/fontWhite"
android:clipToPadding="false"
android:gravity="bottom"
android:orientation="horizontal"
android:paddingTop="4dp"
android:paddingBottom="4dp"
android:visibility="visible">
<RadioButton
android:id="@+id/radio_0"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="@null"
android:button="@null"
android:checked="true"
android:drawableTop="@drawable/select_tab_0"
android:gravity="center"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:text="@string/lab_tab_home"
android:textColor="@color/select_menu_txt"
android:textSize="12sp" />
<RadioButton
android:id="@+id/radio_1"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="@null"
android:button="@null"
android:drawableTop="@drawable/select_tab_1"
android:gravity="center"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:text="@string/lab_tab_discover"
android:textColor="@color/select_menu_txt"
android:textSize="12sp" />
<RadioButton
android:id="@+id/radio_4"
android:layout_width="0dp"
android:layout_height="90dp"
android:layout_gravity="bottom"
android:layout_weight="1"
android:background="@null"
android:button="@null"
android:drawableTop="@mipmap/icon_march"
android:drawablePadding="-16dp"
android:gravity="center"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:text="@string/tab_matching"
android:textColor="@color/select_menu_txt"
android:textSize="12sp" />
<RadioButton
android:id="@+id/radio_2"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="@null"
android:button="@null"
android:drawableTop="@drawable/select_tab_2"
android:gravity="center"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:text="@string/lab_tab_chats"
android:textColor="@color/select_menu_txt"
android:textSize="12sp" />
<RadioButton
android:id="@+id/radio_3"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="@null"
android:button="@null"
android:drawableTop="@drawable/select_tab_3"
android:gravity="center"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:text="@string/lab_tab_my"
android:textColor="@color/select_menu_txt"
android:textSize="12sp" />
</RadioGroup>
</RelativeLayout>
对比发现,我在RadioGroup里添加了android:clipToPadding="false"属性。
clipToPadding属性的意思是 是否在padding区域里绘制View内容。