2012-09-14 37 views
15

मैं चयनित होने पर बटन रंग बदलने के साथ एंड्रॉइड में एक बटन के लिए गोलाकार कोने सेट करना चाहता हूं। मैं निम्नलिखित बातें कर रहा हूं।एंड्रॉइड में गोलाकार कोनों के साथ बटन चयन रंग कैसे सेट करें?

drawable/push_button.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" >  
    <item android:state_pressed="true" android:drawable="@color/green"/> 
    <item android:state_focused="true" android:drawable="@color/green"/> 
    <item android:state_focused="false" android:drawable="@color/green"/> 
    <item android:state_pressed="false" android:drawable="@color/red"/> 
    <item android:drawable="@drawable/push_button_background"/>   
</selector> 

drawable/push_button_background.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    > 
    <solid android:color="#3F4040"/> 
    <corners 
    android:radius="7dp" 
    /> 
</shape> 

और कोड में, मैं

android:background="@drawable/push_button" 

यहाँ उपयोग कर रहा हूँ, समस्या है, बटन रंग चयनित & चयनित होने पर ठीक से सेटिंग कर रहे हैं। लेकिन, गोलाकार कोनों काम नहीं कर रहे हैं।

यह कैसे करें? अगर मैं

android:background="@drawable/push_button_background" 

तो उपयोग करते हैं, कोनों काम कर रहे हैं गोल लेकिन चयन पर बटन रंग बदलने

काम नहीं कर रहा यह कैसे लागू करने के लिए?

मैंने this लिंक का संदर्भ दिया है। फिर भी कोई मदद नहीं !!

+0

यदि आप किसी अन्य कुछ 'त्रिज्या के साथ अपने वांछित रंग के साथ drawables' और सभी को परिभाषित है, और अपने परिभाषित' drawables' करने के लिए बदल '@ रंग/color' करना पड़ सकता है। – Aprian

+0

@ एपियन .. क्या आप कृपया थोड़ा और विस्तार कर सकते हैं? मैं एंड्रॉइड के लिए नौसिखिया हूँ !! क्या आप कुछ नमूना दे सकते हैं? – Bharath

उत्तर

51

मुझे कुछ परीक्षण & त्रुटि प्रयासों के साथ मेरे प्रश्न का उत्तर मिला है।

यहां समाधान है।

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

<item android:state_pressed="true"> 
    <shape > 
    <solid android:color="@color/green"/> 
    <corners 
    android:radius="7dp"/> 
    </shape> 
</item> 

<item android:state_focused="true" > 
    <shape xmlns:android="http://schemas.android.com/apk/res/android" > 
    <solid android:color="@color/green"/> 
    <corners 
    android:radius="7dp"/> 
    </shape> 
</item> 

<item android:state_focused="false" > 
    <shape xmlns:android="http://schemas.android.com/apk/res/android" > 
    <solid android:color="@color/red"/> 
    <corners 
    android:radius="7dp"/> 
    </shape> 
</item> 

<item android:state_pressed="false" > 
    <shape xmlns:android="http://schemas.android.com/apk/res/android" > 
    <solid android:color="@color/red"/> 
    <corners 
    android:radius="7dp" 
    /> 
    </shape> 
</item> 

</selector> 
2

मैंने जो किया वह आकार को परिभाषित किया गया था और प्रत्येक कोने के डीपी निर्दिष्ट किया गया था।

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

</shape> 

यदि आप प्रत्येक कोने में डीपी बढ़ाते हैं तो यह बटन को और अधिक गोल कर देगा।

+0

@ ज़ाबावाबा .. नहीं .. यह काम नहीं कर रहा है !! मैंने यह भी किया !! – Bharath

+0

क्या आपने शैली का उपयोग करने की कोशिश की है?आप एक बटन के लिए एक बनाना चाहते हैं और फिर इसे कभी भी बटन पर लागू कर सकते हैं। मैंने पहले बटन के लिए यह कोशिश नहीं की है, लेकिन मुझे पता है कि आप चयनकर्ता जोड़ सकते हैं और एक शैली का उपयोग कर दृश्य (ऊंचाई, रंग, यह चयनकर्ता, छवियों, आदि) के विभिन्न पहलुओं को बदल सकते हैं। – zabawaba99

0

मैं वही कर रहा हूं जो आप वर्णन कर रहे हैं। मैंने निम्नलिखित किया:

सबसे पहले, मैंने एक नई कक्षा बनाई जो बटन को बढ़ाती है।

public void setState (int s) 
{ 
    if (s > 0 && s < 4 &&) 
    { 
     this.state = s; 
     switch (state) 
     { 
      case 1: 
       setBackgroundDrawable (def_gray); 
       break; 

      case 2: 
       setBackgroundDrawable (lt_gray); 
       break; 

      case 3: 
       setBackgroundDrawable (black); 
     } 
    } 
} 

तीन पृष्ठभूमि ऊपर दिखने वाला बटन नज़र का वर्णन एक्सएमएल फाइल कर रहे हैं drawables: इस वर्ग में, मैं) एक विधि setState (बुलाया बनाया। वे ज्यादातर समान होते हैं, लेकिन प्रत्येक के लिए रंग सेट में भिन्न होते हैं। डिफ़ॉल्ट ग्रे बटन इस तरह वर्णित है:

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

<selector 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item> 

     <shape> 

      <gradient 
       android:startColor="#333333" 
       android:endColor="#333333" /> 

      <stroke 
       android:width="2dp" 
       android:color="@android:color/white" /> 

      <corners 
       android:radius="5dp" /> 

      <padding 
       android:left="2dp" 
       android:top="2dp" 
       android:right="2dp" 
       android:bottom="2dp" /> 

     </shape> 

    </item> 

</selector> 

जहाँ तक मुझे पता है, कि XML स्वरूप बटन चेहरे पर एक रंग ढाल कॉन्फ़िगर करने के लिए इस्तेमाल किया जा करने की उम्मीद कर रहा है। चूंकि वह वही नहीं था जो मैं चाहता था, मैंने रंगीन मानों को समान बना दिया और पृष्ठभूमि रंग सुसंगत है। आपको कलर वैल्यू के साथ थोड़ा प्रयोग करने की आवश्यकता हो सकती है, लेकिन ऐसा लगता है कि आपके पास पहले से ही एक हैंडल है।