Android:如何使用带笔划的选择器将设置背景颜色设置为按钮?

时间:2016-02-18 13:59:56

标签: android android-layout selector

我有以下选择器:

<?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" />

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

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

非常感谢任何建议

2 个答案:

答案 0 :(得分:1)

首先,在 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",所以下一个项目将用于按下状态。

另请参阅StateListDrawable

documentation

答案 1 :(得分:0)

      <?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>