Android बटन चयनकर्ता


115

यह एक बटन चयनकर्ता है, जो सामान्य रूप से लाल दिखाई देता है, जब दबाया जाता है तो यह ग्रे दिखाई देता है।

मैं पूछना चाहता हूं कि कोड को सीधे सीधे कैसे संशोधित किया जा सकता है जब पाठ आकार और रंग भी बदल सकते हैं? बहुत धन्यवाद!

<item android:state_pressed="true" >         
    <shape xmlns:android="http://schemas.android.com/apk/res/android"> 
        <stroke android:width="2dp" android:color="@color/black" />
        <solid android:color="@color/grey"/>
        <padding android:left="5dp" android:top="2dp" 
            android:right="5dp" android:bottom="2dp" /> 
        <corners android:radius="5dp" /> 
    </shape>    
</item>

<item>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"> 
        <stroke android:width="2dp" android:color="@color/black" />
        <solid android:color="#FF6699"/>
        <padding android:left="5dp" android:top="2dp" 
            android:right="5dp" android:bottom="2dp" /> 
        <corners android:radius="5dp" /> 
    </shape>
</item>

जवाबों:


217

तुम बस सेट करने की जरूरत है selectorकी buttonअपने लेआउट फ़ाइल में।

<Button
     android:id="@+id/button1"
     android:background="@drawable/selector_xml_name"
     android:layout_width="200dp"
     android:layout_height="126dp"
     android:text="Hello" />

और हो गया।

संपादित करें

निर्देशिका button_effect.xmlमें फ़ाइल निम्नलिखित हैdrawable

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/numpad_button_bg_selected" android:state_selected="true"></item>
    <item android:drawable="@drawable/numpad_button_bg_pressed" android:state_pressed="true"></item>
    <item android:drawable="@drawable/numpad_button_bg_normal"></item>

</selector>

इसमें, आप देख सकते हैं कि 3 ड्रॉबल्स हैं, आपको बस इस button_effectशैली को अपने पास रखने की आवश्यकता है button, जैसा कि मैंने ऊपर लिखा था। आपको बस इसके selector_xml_nameसाथ बदलने की आवश्यकता है button_effect


क्या आप दबाया और गैर-दबाए गए राज्य को सेट करने के लिए अधिक विस्तृत कर सकते हैं? (उपरोक्त सभी घटकों जैसे कि गोल रंग, स्ट्रोक, आदि के साथ)। बहुत धन्यवाद!
पीरमाक

चयनकर्ता को लागू करने का सबसे अच्छा तरीका है xml का उपयोग करके इस blazin.in/2016/03/how-to-use-selectors-for-botton.html मैं इसे और इसके काम के अनुसार लागू
किया गया है

नमस्ते, मुझे पता है कि आपने इस पोस्ट को लिखने में थोड़ी देर की है लेकिन शायद आपको पता होगा कि मैं क्या याद कर रहा हूं। मैंने आपके कोड का उपयोग किया है और मेरा बटन हरे रंग का है, फिर दबाया गया = सही और चयनित के लिए = यह ग्रे के लिए ड्रॉबल में बदल रहा है, लेकिन अन्य गतिविधि के खुलने से पहले के सेकंड में डिफ़ॉल्ट एंड्रॉइड स्टाइल है। किसी भी विचार मैं किस राज्य को याद कर रहा हूं?
volfk

27

आप राज्य की सूची के साथ पाठ आकार परिवर्तन को प्राप्त नहीं कर सकते । टेक्स्ट का रंग और टेक्स्ट का आकार बदलने के लिए ऐसा करें:

लिखावट का रंग

पाठ का रंग बदलने के लिए, आप रंग स्थिति सूची संसाधन बना सकते हैं । यह res/color/निर्देशिका में स्थित एक अलग संसाधन होगा । लेआउट xml में आपको इसे android:textColorविशेषता के मान के रूप में सेट करना होगा । रंग चयनकर्ता तब कुछ इस तरह से होगा:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:color="@color/text_pressed" />
    <item android:color="@color/text_normal" />
</selector>

शब्दों का आकर

आप केवल संसाधनों के साथ पाठ का आकार नहीं बदल सकते। कोई "डिमॉन चयनकर्ता" नहीं है। आपको इसे कोड में करना होगा। और कोई सीधा उपाय नहीं है।

संभवत: सबसे आसान समाधान हो सकता है View.onTouchListener()कि ऊपर और नीचे की घटनाओं को तदनुसार उपयोग करना और संभालना। कुछ इस तरह का उपयोग करें:

view.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                // change text size to the "pressed value"
                return true;
            case MotionEvent.ACTION_UP:
                // change text size to the "normal value"
                return true;
            default:
                return false;
            }
        }
});

एक अलग समाधान दृश्य को विस्तारित करने और setPressed(Boolean)विधि को ओवरराइड करने के लिए हो सकता है । विधि को आंतरिक रूप से कहा जाता है जब दबाए गए राज्य का परिवर्तन होता है। फिर विधि कॉल के अनुसार पाठ का आकार बदलें (सुपर कॉल करना न भूलें)।


14

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

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:drawable="@drawable/unselected" android:state_pressed="true" />
   <item android:drawable="@drawable/selected" />
</selector>

ड्रा करने योग्य फ़ोल्डर में चयनित.xml आकार बनाएँ

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" android:padding="90dp">
   <solid android:color="@color/selected"/>
   <padding />
   <stroke android:color="#000" android:width="1dp"/>
   <corners android:bottomRightRadius="15dp" android:bottomLeftRadius="15dp" android:topLeftRadius="15dp" android:topRightRadius="15dp"/>
</shape>

ड्रा करने योग्य फ़ोल्डर में अचयनित। Xml आकार बनाएँ

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" android:padding="90dp">
   <solid android:color="@color/unselected"/>
   <padding />
   <stroke android:color="#000" android:width="1dp"/>
   <corners android:bottomRightRadius="15dp" android:bottomLeftRadius="15dp" android:topLeftRadius="15dp" android:topRightRadius="15dp"/>
</shape>

मान फ़ोल्डर के color.xml में चयनित / अचयनित स्थिति के लिए निम्नलिखित रंग जोड़ें

<color name="selected">#a8cf45</color>
<color name="unselected">#ff8cae3b</color>

आप यहाँ से पूरा समाधान देख सकते हैं


2

चयनकर्ता को लागू करने का सबसे अच्छा तरीका प्रोग्राम के रूप में एक्सएमएल का उपयोग करने के बजाय एक्सएमएल के साथ लागू करना अधिक आसान है।

    <?xml version="1.0" encoding="utf-8"?>    
<selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:drawable="@drawable/button_bg_selected" android:state_selected="true"></item>
        <item android:drawable="@drawable/button_bg_pressed" android:state_pressed="true"></item>
        <item android:drawable="@drawable/button_bg_normal"></item>

    </selector>

अधिक जानकारी के लिए मैंने इस लिंक का उपयोग करके लागू किया http://www.blazin.in/2016/03/how-to-use-selectors-for-botton.html


2

लेआउट में .xml फ़ाइल

<Button
 android:id="@+id/button1"
 android:background="@drawable/btn_selector"
 android:layout_width="100dp"
 android:layout_height="50dp"
 android:text="press" />

btn_selector.xml

<?xml version="1.0" encoding="utf-8"?>

 <item android:drawable="@drawable/btn_bg_selected" android:state_selected="true"></item>
<item android:drawable="@drawable/btn_bg_pressed" android:state_pressed="true"></item>
<item android:drawable="@drawable/btn_bg_normal"></item>


1

आप इस कोड का उपयोग कर सकते हैं:

<Button
android:id="@+id/img_sublist_carat"
android:layout_width="70dp"
android:layout_height="68dp"
android:layout_centerVertical="true"
android:layout_marginLeft="625dp"
android:contentDescription=""
android:background="@drawable/img_sublist_carat_selector"
android:visibility="visible" />

(चयनकर्ता फ़ाइल) img_sublist_carat_selector.xml:

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:state_focused="true" 
       android:state_pressed="true"        
       android:drawable="@drawable/img_sublist_carat_highlight" />
 <item android:state_pressed="true" 
       android:drawable="@drawable/img_sublist_carat_highlight" />
 <item android:drawable="@drawable/img_sublist_carat_normal" />
</selector>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.