Estoy intentando anular la apariencia predeterminada de ToggleButton
. Aquí está el código XML que define la ToggleButton
:Android: especifique dos imágenes diferentes para togglebutton utilizando XML
<ToggleButton android:id="@+id/FollowAndCenterButton"
android:layout_width="30px"
android:layout_height="30px"
android:textOn="" android:textOff="" android:layout_alignParentLeft="true"
android:layout_marginLeft="5px"
android:layout_marginTop="5px" android:background="@drawable/locate_me"/>
Ahora, tenemos dos 30 x 30 iconos que queremos usar para los estados ha hecho clic/no hace clic. En este momento tenemos código que cambia mediante programación el icono de fondo en función del estado:
centeredOnLocation.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (centeredOnLocation.isChecked()) {
centeredOnLocation.setBackgroundDrawable(getResources().getDrawable(R.drawable.locate_me_on));
} else {
centeredOnLocation.setBackgroundDrawable(getResources().getDrawable(R.drawable.locate_me));
}
}
});
Obviamente estoy buscando una mejor manera de hacer esto. He tratado de hacer un selector de la imagen de fondo, lo que cambia automáticamente entre los estados:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/locate_me" /> <!-- default -->
<item android:state_checked="true"
android:drawable="@drawable/locate_me_on" /> <!-- pressed -->
<item android:state_checked="false"
android:drawable="@drawable/locate_me" /> <!-- unchecked -->
Pero esto no funciona; leer el ToggleButton
API (http://developer.android.com/reference/android/widget/ToggleButton.html), parece que los únicos atributos XML son heredados
XML Attributes
Attribute Name Related Method Description
android:disabledAlpha The alpha to apply to the indicator when disabled.
android:textOff The text for the button when it is not checked.
android:textOn The text for the button when it is checked.
No parece ser el androide: state_checked atributo, a pesar de tener la clase y el método isChecked()
setChecked()
.
Entonces, ¿hay alguna manera de hacer lo que quiero en XML, o me quedo atascado con mi complicada solución?
Nota, si no está usando texto, creo que puede ser mejor usar 'CompoundButton'. – Timmmm
Ignore eso; 'CompoundButton' es abstracto! – Timmmm