tuve este problema con un botón con un fondo personalizado, y terminó con el selected state para esto. Ese estado está disponible para todas las vistas.
Para utilizar este tiene que definir un fondo botón personalizado como 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>
Luego de usar este contexto, digamos que está en /res/drawable/button_bg.xml
en su archivo de diseño, que utilice:
...
<Button android:background="@drawable/button_bg" ... />
...
en su código puede cambiar al estado seleccionado (des) en su onClick oyente:
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
v.setSelected(true);
// normal click action here
}
});
El activated state coincide mejor con el significado previsto, pero solo está disponible desde Android 3.xy versiones posteriores.
¿Puede usted decirnos, qué problema tuvo este código? –
Después de hacer clic en el botón, no se queda como está presionado (me refiero con el color verde), vuelve al estado original, gris. – Nikitas