关于clipChildren属性无效的原因

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内容。

推荐阅读更多精彩内容