Android: 如何使用带有描边的选择器为按钮设置背景颜色?

Android: how to set set background color to button using selector with stroke?

我有以下选择器:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <stroke android:width="1dp" android:color="@color/divider"/>
        </shape>
    </item>
</selector>

用作按钮的背景:

<Button
    android:id="@+id/delete"
    android:layout_width="25dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:background="@drawable/delete_button_stroke"
    android:text="@string/minus"
    android:textColor="@color/blue"
    android:textSize="20sp" />

我在按钮周围做了一个边框,但是按钮的背景颜色是透明的。

请问如何使用选择器设置背景颜色和按下按钮的背景颜色?

非常感谢任何建议

      <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
            <shape android:shape="rectangle">
                <stroke android:width="1dp" android:color="@color/divider"/>
            </shape>
        </item>
 <color android:color="@color/abc_search_url_text_normal"/>// add this line it should work.
    </selector>

首先,在您的 res/drawable 文件夹中创建两个 ShapeDrawable xml 文件,如下所示:

btn_state_normal.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
   android:shape="rectangle" >
    <solid
        android:color="#ffff00"
    />
    <stroke
        android:width="2dp"
        android:color="#0000ff"
    />
    <padding
        android:left="2dp"
        android:top="2dp"
        android:bottom="2dp"
        android:right="2dp"
    />
    <size
        android:height="10dp"
        android:width="10dp"
    />
</shape>

btn_state_pressed.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
   android:shape="rectangle" >
    <solid
        android:color="#ff0000"
    />
    <stroke
        android:width="2dp"
        android:color="#00ff00"
        android:dashWidth="4dp"
        android:dashGap="2dp"
    />
    <padding
        android:left="2dp"
        android:top="2dp"
        android:bottom="2dp"
        android:right="2dp"
    />
    <size
        android:height="10dp"
        android:width="10dp"
    />
</shape>

请注意,大小值与 (Image)Button 无关,可绘制对象会拉伸以适合。

那么您的选择器应该如下所示:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@drawable/btn_state_normal"
        android:state_pressed="false"/>

    <item
        android:drawable="@drawable/btn_state_pressed"
        android:state_pressed="true"/>
</selector>

因为第一项设置了android:state_pressed="false",所以下一项将用于按下状态。

另见 documentation StateListDrawable