这是我使用的解决方案,目前它也适用于android 7.0。
YourActivity.java
public void onStandbyStart(String message) {
startStandbyBtn.setActivated(true);
}
public void onBackOnline(String message) {
startStandbyBtn.setActivated(false);
}
你的活动布局
<Button
...
style="@style/generic_btn_style"
... />
values/styles.xml
<style name="generic_btn_style" parent="@android:style/Widget.Button">
<item name="android:gravity">center_vertical|center_horizontal</item>
<item name="android:background">@drawable/generic_btn</item>
<item name="android:textColor">@color/selector_white_black</item>
<item name="android:focusable">true</item>
<item name="android:clickable">true</item>
</style>
drawable/generic_btn.xml
此选择器选择按钮背景。我用按下的作为激活的。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/generic_btn_disabled" android:state_enabled="false" />
<item android:drawable="@drawable/generic_btn_pressed" android:state_enabled="true" android:state_pressed="true" />
<item android:drawable="@drawable/generic_btn_pressed" android:state_activated="true" />
<item android:drawable="@drawable/generic_btn_focused" android:state_enabled="true" android:state_focused="true" />
<item android:drawable="@drawable/generic_btn_enabled" android:state_enabled="true" />
</selector>
颜色/selector_black_white
在这里我设置了文本颜色。在我的情况下,我需要在按下时选择 textcolor black。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#fff" android:state_pressed="true" /> <!-- pressed -->
<item android:color="#fff" android:state_activated="true" /> <!-- pressed -->
<item android:color="#000" /> <!-- default -->
</selector>