अलग राज्य पर दो छवि का उपयोग कर बटन टॉगल करें


101

मुझे ON / OFF स्थिति के बजाय दो छवि का उपयोग करके टॉगल बटन बनाने की आवश्यकता है।

ऑफ स्टेट में मैंने बैकग्राउंड इमेज सेट किया है। लेकिन बैकग्राउंड इमेज का इस्तेमाल करते समय ऑफ टेक्स्ट को हटाया नहीं जा सकता।

और मैं टॉगल बटन पर क्लिक करके राज्य पर एक और छवि सेट नहीं कर सकता :( मैं एंड्रॉइड में नया हूं। मुझे आशा है कि आप लोग मुझे इस समस्या से बाहर निकालने में मदद करेंगे।


जवाबों:


219

यह करो:

<ToggleButton 
        android:id="@+id/toggle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/check"   <!--check.xml-->
        android:layout_margin="10dp"
        android:textOn=""
        android:textOff=""
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:layout_centerVertical="true"/>

drawable फ़ोल्डर में check.xml बनाएँ

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- When selected, use grey -->
    <item android:drawable="@drawable/selected_image"
          android:state_checked="true" />
    <!-- When not selected, use white-->
    <item android:drawable="@drawable/unselected_image"
        android:state_checked="false"/>

 </selector>

1
Check.xml में दो चित्र (चयनित / अचयनित) जोड़ें, जो टॉगल बटन के दो अलग-अलग राज्यों के रूप में काम करेगा
आकाश

19
क्या आपको पृष्ठभूमि के खिंचाव की समस्या है?
माइक बेवज

2
android: textOn = "" android: textOff = "" जिसे मैं ढूंढ रहा था
png

9
चूंकि ऐसा लगता है कि दूसरों को भी यह समस्या थी, इसलिए मैं यहां अपना समाधान जोड़ रहा हूं। जोड़ें android:background="@null"और android:drawableRight="@drawable/check"। आमतौर पर मैंने पाया है कि बटन टॉगल सही-सही हैं। यदि आपको इसकी आवश्यकता है तो यह उचित है, उपयोग करेंandroid:drawableLeft
पैट्रिक

1
@ पैट्रिक लेकिन क्या होगा अगर आप चाहते हैं कि यह केंद्र उचित हो? ... सभी उपकरणों पर। तो चलिए हाशिये और पैडिंग में नहीं आते।
मार्टिन एरिक

47

आकाश का समाधान मेरे लिए काम नहीं करता है। जब मैंने check.xml को बैकग्राउंड में सेट किया तो यह सिर्फ ऊर्ध्वाधर दिशा में स्ट्रैच हो गया। इस समस्या को हल करने के लिए आपको "android: बटन" प्रॉपर्टी में check.xml सेट करना चाहिए:

<ToggleButton 
    android:id="@+id/toggle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:button="@drawable/check"   //check.xml
    android:background="@null"/>

check.xml:

<?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- When selected, use grey -->
    <item android:drawable="@drawable/selected_image"
          android:state_checked="true" />
    <!-- When not selected, use white-->
    <item android:drawable="@drawable/unselected_image"
          android:state_checked="false"/>
    </selector>

10
ToggleButton का मूल कंपाउंडबटन है। और CompoundButton में android है: बटन विशेषता: developer.android.com/reference/android/…
MistaGreen

3
यह सही उत्तर होना चाहिए। स्ट्रेच्ड ड्रॉबल्स में स्वीकृत उत्तर परिणाम।
बामरज़ा

यदि छवियों में पारदर्शिता है, तो android:background="@android:color/transparent"इसका इस्तेमाल किया जा सकता है
पावेल

@ बमरजा, नहीं, यह सभी मामलों पर लागू नहीं होता है। यदि आप इसे .svg के साथ आज़माते हैं तो आपको स्ट्रेच बैकग्राउंड मिलेगा।
फरीद

2

आप कुछ इस तरह की कोशिश कर सकते हैं। यहाँ इमेज बटन पर क्लिक करने पर मुझे इमेजव्यू टॉगल करना है।

holder.imgitem.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
            if(!onclick){
            mSparseBooleanArray.put((Integer) view.getTag(), true);
            holder.imgoverlay.setImageResource(R.drawable.ipad_768x1024_editmode_delete_overlay_com);
            onclick=true;}
            else if(onclick)
            {
                 mSparseBooleanArray.put((Integer) view.getTag(), false);
                  holder.imgoverlay.setImageResource(R.drawable.ipad_768x1024_editmode_selection_com);

            onclick=false;
            }
        }
    });
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.