【需求说明】
对于界面上的按钮,背景可以按照不同状态(正常态和Pressed态)显示不同的背景图片,同时按钮上的文本可以根据不同状态(正常和Pressed态)显示不同的颜色。
【实现说明】
原理: Android开发中自带Selector选择器,选择器可以根据不同的状态设置不同的背景图片或者文字颜色。
步骤:
1. 添加资源文件(mipmap文件夹xxhdpi)中加入button对应的两张图片(btn_status_normal.png 和 btn_status_pressed.png)
2. 在drawable文件中新建resource文件(其实就是新建一个selector文件,button_status_selector.xml)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@mipmap/btn_status_normal" android:state_pressed="false"/>
<item android:drawable="@mipmap/btn_status_pressed" android:state_pressed="true"/>
</selector>
3. 在drawable文件夹中新建text color selector文件,text_color_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#57565D" android:state_pressed="false"/>
<item android:color="#FFFFFF" android:state_pressed="true"/>
</selector>
4. 在需要添加选择状态的button中添加selector动作。
<Button
android:layout_width="100dp"
android:layout_height="30dp"
android:layout_centerInParent="true"
android:focusable="true"
android:background="@drawable/button_status_selector"
android:textColor="@drawable/text_color_selector"
android:text="测试按钮"
android:textSize="14sp"
/>
【效果展示】
【扩展训练】
既然文字pressed态有了不同颜色,当然也可以支持button的disable态(button禁用态)等状态了,读者可以自行尝试。