选择器中的Android按钮形状不';行不通

选择器中的Android按钮形状不';行不通,android,button,shape,cornerradius,Android,Button,Shape,Cornerradius,我有一个按钮和一个选择器,必须更改按钮的颜色,填充和角半径。我在更改颜色方面没有问题,但在填充和角半径方面,我看不到任何更改 按钮\u color.xml <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/button_disabled"

我有一个
按钮
和一个
选择器
,必须更改
按钮的
颜色
填充
角半径
。我在更改
颜色方面没有问题,但在
填充
角半径
方面,我看不到任何更改

按钮\u color.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:drawable="@color/button_disabled" android:state_enabled="false">
    <shape
        android:shape="rectangle"
        android:padding="8dp">
        <corners android:radius="4dp" />

    </shape>
</item>
<item android:drawable="@color/button_pressed" android:state_pressed="true">
    <shape
        android:shape="rectangle"
        android:padding="8dp">
        <corners android:radius="4dp" />

    </shape>
</item>
<item android:drawable="@color/button_focused" android:state_focused="true">
    <shape
        android:shape="rectangle"
        android:padding="8dp">
        <corners android:radius="4dp" />

    </shape>
</item>
<item android:drawable="@color/colorAccent">
    <shape
        android:shape="rectangle"
        android:padding="8dp">
        <corners android:radius="4dp" />
    </shape>
</item>

</selector>
我知道一些笨拙的方法来获得
填充
-将其放入布局,但1)它将是“无用的父项”;2) 我不会得到
角半径

那么我做错了什么,所以我没有
形状


谢谢

android:radius
的值可能太小,无法看到效果。另一方面,
填充的语法必须更改如下:

<item android:drawable="@color/button_focused" android:state_focused="true">
    <shape
        android:shape="rectangle">
        <corners android:radius="20dip" />
        <padding
            android:left="8dip"
            android:top="8dip"
            android:right="8dip"
            android:bottom="8dip" />

    </shape>
</item>

请注意:如

要应用于包含视图元素的填充(这将填充视图内容的位置,而不是形状)


填充、颜色和角应位于
形状的内部

所以试试这个:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_enabled="false">
        <shape>
            <padding android:left="5dp" android:top="2dp"
                     android:right="5dp" android:bottom="2dp" />
            <corners android:radius="4dp" />
            <solid android:color="@color/colorPrimary"/>
        </shape>
    </item>
    <item android:state_pressed="true">
        <shape>
            <padding android:left="5dp" android:top="2dp"
                     android:right="5dp" android:bottom="2dp" />
            <corners android:radius="4dp" />
            <solid android:color="@color/colorAccent"/>
        </shape>
    </item>
    <item android:state_focused="true">
        <shape>
            <padding android:left="5dp" android:top="2dp"
                     android:right="5dp" android:bottom="2dp" />
            <corners android:radius="4dp" />
            <solid android:color="@color/colorPrimary"/>
        </shape>
    </item>
    <item>
        <shape>
            <padding android:left="5dp" android:top="2dp"
                     android:right="5dp" android:bottom="2dp" />
            <solid android:color="@color/colorPrimaryDark"/>
            <corners android:radius="4dp" />
        </shape>
    </item>

</selector>


这样,它们都能工作。

的确如此!它已更改了
角半径
!但是填充保持不变,所以通过
边距解决这个问题。非常感谢你!
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_enabled="false">
        <shape>
            <padding android:left="5dp" android:top="2dp"
                     android:right="5dp" android:bottom="2dp" />
            <corners android:radius="4dp" />
            <solid android:color="@color/colorPrimary"/>
        </shape>
    </item>
    <item android:state_pressed="true">
        <shape>
            <padding android:left="5dp" android:top="2dp"
                     android:right="5dp" android:bottom="2dp" />
            <corners android:radius="4dp" />
            <solid android:color="@color/colorAccent"/>
        </shape>
    </item>
    <item android:state_focused="true">
        <shape>
            <padding android:left="5dp" android:top="2dp"
                     android:right="5dp" android:bottom="2dp" />
            <corners android:radius="4dp" />
            <solid android:color="@color/colorPrimary"/>
        </shape>
    </item>
    <item>
        <shape>
            <padding android:left="5dp" android:top="2dp"
                     android:right="5dp" android:bottom="2dp" />
            <solid android:color="@color/colorPrimaryDark"/>
            <corners android:radius="4dp" />
        </shape>
    </item>

</selector>