2012-02-27 9 views
13

में ड्रायबल के टिंट को बदलें मेरे पास xml में परिभाषित पृष्ठभूमि वाला एक बटन है। मैं वर्तमान स्थिति के आधार पर बटन को टिंट करना चाहता हूं - यानी दबाया, केंद्रित, सामान्य।एक्सएमएल चयनकर्ता

यहां मेरी एक्सएमएल फ़ाइल है। इसके अलावा, मेरे colored_tint_dark, और colored_tint दोनों पारदर्शी रंग हैं जिन्हें मैं ड्रॉइंग छवि पर आकर्षित करने की कोशिश कर रहा हूं जिसे मैं संसाधन फ़ोल्डर से कॉल करता हूं। यहाँ समस्या है। जब यूआई पहले लोड होता है, तो छवि पर उचित टिंट होता है, लेकिन दबाए जाने के बाद, दबाया गया राज्य कोई टिंट नहीं दिखाता है, तो सामान्य स्थिति कोई टिंट नहीं दिखाएगी।

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

<item android:state_pressed="true" android:drawable="@drawable/rounded_grayscale_pinstripe_button"> 
    <shape> 
     <gradient 
      android:endColor="@color/colored_tint" 
      android:startColor="@color/colored_tint" 
      android:angle="270" /> 
     <stroke 
      android:width="0dp" 
      android:color="@color/colored_tint" /> 
     <corners 
      android:radius="0dp" /> 
     <padding 
      android:left="10dp" 
      android:top="10dp" 
      android:right="10dp" 
      android:bottom="10dp" /> 
    </shape> 
</item> 

<item android:state_focused="true" android:drawable="@drawable/rounded_grayscale_pinstripe_button"> 
    <shape> 
     <gradient 
      android:endColor="@color/colored_tint" 
      android:startColor="@color/colored_tint" 
      android:angle="270" /> 
     <stroke 
      android:width="0dp" 
      android:color="@color/colored_tint" /> 
     <corners 
      android:radius="0dp" /> 
     <padding 
      android:left="10dp" 
      android:top="10dp" 
      android:right="10dp" 
      android:bottom="10dp" /> 
    </shape> 
</item> 

<item android:drawable="@drawable/rounded_grayscale_pinstripe_button">   
    <shape> 
     <gradient 
      android:endColor="@color/colored_tint_dark" 
      android:startColor="@color/colored_tint_dark" 
      android:angle="270" /> 
     <stroke 
      android:width="0dp" 
      android:color="@color/colored_tint_dark" /> 
     <corners 
      android:radius="0dp" /> 
     <padding 
      android:left="10dp" 
      android:top="10dp" 
      android:right="10dp" 
      android:bottom="10dp" /> 
    </shape> 
</item> 

मैं जानता हूँ कि जावा में इस के लिए समाधान देखते हैं कि, लेकिन मैं विशेष रूप से एक्सएमएल में एक समाधान के लिए देख रहा हूँ। धन्यवाद।

उत्तर

1

क्या आपने selector के साथ प्रयास किया है?

आप कुछ उदाहरण देख सकते HERE

12

एक चयनकर्ता tint_menu_item.xml बनाएँ:

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

(मेरी उदाहरण में, छवि जब चयनित, और हरे रंग की जब चयनित नहीं सफेद है)

फिर अपने एक्सएमएल में, आप छवि दृश्य में टिंट विशेषता जोड़ सकते हैं:

<ImageView 
    android:layout_width="30dp" 
    android:layout_height="30dp" 
    android:tint="@color/tint_menu_item" 
    android:src="@drawable/ic_menu_home" /> 

तुम भी textcolor attibute का उपयोग कर एक TextView पर इस का भी उपयोग कर सकते हैं:

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textColor="@color/tint_menu_item" /> 
+0

हाय, मैं एपीआई 18 और निचले [कड़ी] (http://stackoverflow.com/questions/38673196/crash पर रंग चयनकर्ता के साथ मुद्दा है -डुरिंग-फुफ्फुस-व्यू-वेक्टर-ड्रायरेबल-टिंट-कलर-सिलेक्टर) क्या आपके पास सुझाव हैं कि समस्या क्या हो सकती है? – Alex

+0

एंड्रॉइड: टिंट विशेषता सभी एपिस पर काम नहीं करती है। इसे हल करने के लिए आप सीधे सही रंग के साथ .png फ़ाइल बना सकते हैं और फिर एंड्रॉइड को हटा सकते हैं: अपनी छवि दृश्य से टिंट विशेषता –

+0

मैं tint_menu_item.xml कहां डालूं? – rraallvv

संबंधित मुद्दे