Android studio版本:3.5.2
SDK Platforms版本: Android 10.0 (API 29)
SDK Platform-Tools版本: 29.0.5
SDK Tools版本:26.1.1
1. 首先在app/res中增加selector:
在工程的文件树中选择“app->res”,点击鼠标右键,在弹出菜单中选择“New->Android resource file”,然后在弹出的“New Resource File”对话框中,填写selector的文件名,将“Resource Type”改为“Drawable”,将“Root element”改为“selector”,“Directory name”指定了要创建的selector文件所在的文件夹。点击OK即可看到“app->res->drawable”中已经创建了新的selector文件。
2. 编辑selector文件:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/colorCategoryButtonBKSelected"/>
<item android:state_selected="true" android:drawable="@drawable/colorCategoryButtonBKSelected"/>
<item android:drawable="@drawable/colorCategoryButtonBKDefault"/>
</selector>
这个selector表示在按钮按下和选中时显示colorCategoryButtonBKSelected所指定的颜色,默认为colorCategoryButtonBKDefault颜色。
注意:这里不能直接设置属性item android:color=xxx,这样在运行时会报错。
需要在res->values->colors.xml中设置drawable,然后在item中设置android:drawable属性:
<resources>
<color name="colorPrimary">#008577</color>
...
<drawable name="colorCategoryButtonBKDefault">#000000</drawable>
<drawable name="colorCategoryButtonBKSelected">#999900</drawable>
</resources>
3. Button的状态:
默认显示colorCategoryButtonBKDefault颜色;点击时显示colorCategoryButtonBKSelected颜色;当button设置setSelected(true)时才会保持显示colorCategoryButtonBKSelected颜色。