Это решение, которое я использовал, на данный момент также работает на Android 7.0.
YourActivity.java
public void onStandbyStart(String message) {
startStandbyBtn.setActivated(true);
}
public void onBackOnline(String message) {
startStandbyBtn.setActivated(false);
}
YourActivityLayout
<Button
...
style="@style/generic_btn_style"
... />
Значения / 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>
вытяжка / 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
Здесь я установил цвет текста. В моем случае мне нужно выбрать черный цвет текста при нажатии.
<?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>