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
我有以下选择器:
<?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