मैं डिफ़ॉल्ट ToggleButton
उपस्थिति को ओवरराइड करने का प्रयास कर रहा हूं । यहां XML को परिभाषित किया गया है 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"/>
अब, हमारे पास दो 30 x 30 आइकन हैं जिन्हें हम क्लिक किए गए / गैर-क्लिक किए गए राज्यों के लिए उपयोग करना चाहते हैं। अभी हमारे पास कोड है जो प्रोग्राम को स्टेटस के आधार पर बैकग्राउंड आइकन को बदल देता है:
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));
}
}
});
जाहिर है मैं ऐसा करने के लिए बेहतर तरीके की तलाश में हूं। मैंने पृष्ठभूमि छवि के लिए एक चयनकर्ता बनाने की कोशिश की है, जो स्वचालित रूप से राज्यों के बीच स्विच करेगा:
<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 -->
लेकिन यह काम नहीं करता है; ToggleButton
एपीआई पढ़ना ( http://developer.android.com/reference/android/widget/ToggleButton.html ), यह प्रतीत होता है कि केवल विरासत में मिली xml विशेषताएँ हैं
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.
, State_checked विशेषता वर्ग विधि होने के बावजूद: वहाँ एंड्रॉयड होना प्रतीत नहीं होता है isChecked()
और setChecked()
।
तो, क्या एक्सएमएल में जो मैं चाहता हूं उसे करने का एक तरीका है, या क्या मैं अपने गंदे वर्कअराउंड के साथ फंस गया हूं?
CompoundButton
अमूर्त है!
CompoundButton
।