ऐसा करने का कुछ तरीके हैं। उदाहरण के लिए, एंड्रॉइड does for the 'shuffle' button पर यह stock Music player है। यद्यपि आप अपने चेक किए गए राज्य में बटन पृष्ठभूमि पर नियंत्रण नहीं रखेंगे, फिर भी आप छवि को स्वैप करने में सक्षम होंगे, जो एंड्रॉइड यूआई-स्थिरता परिप्रेक्ष्य से अनुकूल हो सकता है।
एक और विकल्प ToggleButton
के अंदर एक छवि प्राप्त करने के लिए ड्रॉबल्स और नौ-पैच के जटिल सेट का उपयोग करना है, पृष्ठभूमि और/या टॉगल पर छवि संसाधन बदलने के विकल्प के साथ। यही वह विकल्प है जो मैं नीचे दिखाऊंगा। लेकिन याद रखें, ऐसा करने से पहले यूआई स्थिरता के बारे में सावधान रहें।
रेस/लेआउट/foo.xml
...
<ToggleButton
android:textOn="" android:textOff=""
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/shuffle_button" />
...
रेस/drawable/shuffle_button.xml
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- use "@android:drawable/btn_default" to keep consistent with system -->
<item android:drawable="@drawable/toggle_button_background" />
<item android:drawable="@drawable/shuffle_button_image" />
</layer-list>
रेस/drawable/toggle_button_background.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- checked state -->
<item android:state_pressed="false" android:state_checked="true"
android:drawable="@drawable/btn_default_checked" />
<item android:state_window_focused="false" android:state_enabled="true"
android:drawable="@drawable/btn_default_normal" />
<item android:state_window_focused="false" android:state_enabled="false"
android:drawable="@drawable/btn_default_normal_disable" />
<item android:state_pressed="true"
android:drawable="@drawable/btn_default_pressed" />
<item android:state_focused="true" android:state_enabled="true"
android:drawable="@drawable/btn_default_selected" />
<item android:state_enabled="true"
android:drawable="@drawable/btn_default_normal" />
<item android:state_focused="true"
android:drawable="@drawable/btn_default_normal_disable_focused" />
<item android:drawable="@drawable/btn_default_normal_disable" />
</selector>
रेस/drawable/shuffle_button_image.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_mp_shuffle_on_btn" android:state_checked="true" />
<item android:drawable="@drawable/ic_mp_shuffle_off_btn" />
</selector>
छवि फ़ाइलें
btn_default_<state>.9.png
core/res/res/drawable-hdpi और core/res/res/drawable-mdpi (भी ldpi) के तहत frameworks/base.git में पाया जा सकता। चेतावनी: यदि आप इनका उपयोग करते हैं, तो आपका ऐप कस्टमाइज्ड ओएस यूआई (यानी एचटीसी सेंस यूआई) वाले उपकरणों पर असंगत दिखाई देगा।
ic_mp_shuffle_<state>_btn.9.png
नौ-पैच होने की आवश्यकता है, ताकि छवि केंद्रित हो और बटन फिट करने के लिए नहीं बढ़ाया जा सके। नीचे दिए गए उदाहरण हैं आइकन के hdpi
संस्करणों:
रेस/drawable- (ज | मीटर | ldpi)/ic_mp_shuffle_ (पर | बंद) _btn.9।png
ic_mp_shuffle_on_btn.9.png http://nikonizer.yfrog.com/Himg404/scaled.php?tn=0&server=404&filename=icmpshuffleonbtn9.png&xsize=640&ysize=640ic_mp_shuffle_off_btn.9.png http://nikonizer.yfrog.com/Himg708/scaled.php?tn=0&server=708&filename=icmpshuffleoffbtn9.png&xsize=640&ysize=640
अंतिम नोट: जब संभव प्रणाली यूआई के अनुरूप होना करने के लिए याद रखें, और यह तथ्य के प्रति जागरूक अपने अनुप्रयोग ओएस के अनुकूलित संस्करण के साथ उपकरणों पर चला सकते हैं कि हो सकता है जिनके बटन जैसे यूआई तत्वों के लिए अलग-अलग ग्राफिक्स हैं। इसका एक उदाहरण HTC Sense है, जिसमें स्टॉक एंड्रॉइड में ग्रे/नारंगी/पीले रंग के स्थान पर हरे रंग के बटन हैं। इसलिए, यदि आप टॉगल-सक्षम बटन पृष्ठभूमि बनाने के लिए ओपन सोर्स रिपॉजिटरी से btn_default_...
पीएनजी फ़ाइलों की प्रतिलिपि बनाते हैं, तो आप उन उपकरणों पर स्थिरता तोड़ देंगे।
क्या आप वाकई 'ImageButton' के बजाय' ToggleButton' नहीं चाहते हैं? – CommonsWare
टॉगल बटन अभी भी मुझे दबाए जाने के लिए बटन सेट करने नहीं देगा। मुझे प्रत्येक बटन के लिए मैन्युअल रूप से कस्टम आइकन बनाना होगा। मैं बस पृष्ठभूमि छवि दबाया जाना चाहता हूँ। – GuyNoir