Я имел этот вопрос с помощью кнопки с настраиваемым фоном, и в конечном итоге с помощью selected state для этого. Это состояние доступно для всех просмотров.
Чтобы использовать эту функцию, вы должны определить пользовательские кнопки фон как state list:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="false" android:state_focused="false"
android:state_pressed="false"><bitmap ... /></item>
<item android:state_selected="true"><bitmap ... /></item>
<item android:state_focused="true"><bitmap ... /></item>
<item android:state_pressed="true"><bitmap ... /></item>
</selector>
Затем использовать этот фон, скажем, что в /res/drawable/button_bg.xml
в файле макета, вы используете:
...
<Button android:background="@drawable/button_bg" ... />
...
в своем коде вы можете переключиться на (де-) выбранного состояния в вашем OnClick слушателя:
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
v.setSelected(true);
// normal click action here
}
});
activated state соответствует намеченному значению лучше, но доступен только с Android 3.x и выше.
Можете ли вы рассказать, какая у вас проблема с этим кодом? –
После того, как я нажму кнопку, он не останется нажатым (я имею ввиду зеленый цвет), он вернется в исходное состояние, серый. – Nikitas