Ich versuche, das Standard- ToggleButtonErscheinungsbild zu überschreiben . Hier ist das XML, das Folgendes definiert ToggleButton:
<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"/>
Jetzt haben wir zwei 30 x 30 Symbole, die wir für die angeklickten / nicht angeklickten Zustände verwenden möchten. Im Moment haben wir Code, der das Hintergrundsymbol je nach Status programmgesteuert ändert:
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));
}
}
});
Offensichtlich suche ich nach einem besseren Weg, dies zu tun. Ich habe versucht, einen Selektor für das Hintergrundbild zu erstellen, der automatisch zwischen den Status wechselt:
<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 -->
Das funktioniert aber nicht; Beim Lesen der ToggleButtonAPI ( http://developer.android.com/reference/android/widget/ToggleButton.html ) scheinen die einzigen geerbten XML-Attribute zu sein
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.
Es scheint kein android: state_checked-Attribut zu geben, obwohl die Klasse die Methode isChecked()und hat setChecked().
Gibt es also eine Möglichkeit, in XML das zu tun, was ich will, oder bin ich mit meiner chaotischen Problemumgehung festgefahren?
CompoundButtonist abstrakt!
CompoundButton.