2012-10-03 24 views
15

में स्विच के टेक्स्ट रंग बदलने के लिए मैं एंड्रॉइड 4.0 का उपयोग करने वाला एक एप्लीकेशन बना रहा हूं। मुझे आश्चर्य है कि स्विच में पाठ के टेक्स्ट रंग को बदलना संभव है या नहीं।एंड्रॉइड

मैंने टेक्स्ट रंग सेट करने का प्रयास किया है, लेकिन यह काम नहीं करता है।

कोई विचार?

अग्रिम धन्यवाद!

+1

पोस्ट अपने कोड .. –

+0

वहाँ कोई विशेष कोड है , यह सिर्फ लेआउट में एक स्विच है, जो आईडी द्वारा पाया जाता है। और कोड में मैंने switch.setTextColor (Color.WHITE) सेट किया है; –

उत्तर

57

आप android:switchTextAppearance विशेषता, जैसे का उपयोग करना चाहिए:

android:switchTextAppearance="@style/SwitchTextAppearance" 

और शैलियों में:

<style name="SwitchTextAppearance" parent="@android:style/TextAppearance.Holo.Small"> 
    <item name="android:textColor">@color/my_switch_color</item> 
</style> 

आप भी यह कोड में, यह भी शैलियों ऊपर का उपयोग कर सकते हैं:

mySwitch.setSwitchTextAppearance(getActivity(), R.style.SwitchTextAppearance); 

... औरके लिए -और Switch अगर आपके SwitchTextAppearance शैली एक textColor

आप setSwitchTextAppearance में Switch स्रोत कोड में जाँच कर सकते हैं प्रदान नहीं करता है इस रंग का उपयोग किया जाएगा:

ColorStateList colors; 
    int ts; 

    colors = appearance.getColorStateList(com.android.internal.R.styleable. 
      TextAppearance_textColor); 
    if (colors != null) { 
     mTextColors = colors; 
    } else { 
     // If no color set in TextAppearance, default to the view's textColor 
     mTextColors = getTextColors(); 
    } 

    ts = appearance.getDimensionPixelSize(com.android.internal.R.styleable. 
      TextAppearance_textSize, 0); 
    if (ts != 0) { 
     if (ts != mTextPaint.getTextSize()) { 
      mTextPaint.setTextSize(ts); 
      requestLayout(); 
     } 
    } 
+1

मुझे आश्चर्य है कि क्यों नहीं वे सिर्फ इस सेट के बजाय सामान्य रूप से 'setTextColor' काम नहीं करते हैं। –

0

TextView.setTextColor() रंग का प्रतिनिधित्व करने वाला एक int लेता है (उदाहरण के लिए 0xFFF5DC49) xml फ़ाइल से संसाधन आईडी नहीं।

textView1.setTextColor(getResources().getColor(R.color.mycolor))

एक गतिविधि आप एक प्रसंग जैसे की आवश्यकता होगी के बाहर: एक गतिविधि में, आप की तरह कुछ कर सकते हैं।

textView1.setTextColor(context.getResources().getColor(R.color.mycolor))

अधिक देखें this

+1

हैलो, आपकी प्रतिक्रिया के लिए पहले धन्यवाद! यह वह जवाब नहीं है जिसे मैं ढूंढ रहा हूं, मुझे इसे टेक्स्टव्यू और एडिटटेक्स के लिए काम करना पड़ा। लेकिन मुझे इसे स्विच के लिए चाहिए और मुझे यकीन नहीं है कि कैसे .. –

+1

असल में 'स्विचटेक्स्ट कॉलर' का उपयोग 'स्विच' के लिए नहीं किया जाता है, जब तक कि 'एंड्रॉइड: स्विचटेक्स्टएपियरेंस' के लिए प्रदान की गई शैली टेक्स्ट को परिभाषित नहीं करती है – imbryk

0

मुझे लगता है कि आप विषय जो आप अपने आवेदन के लिए उपयोग कर रहे हैं को देखने के लिए की है। क्योंकि स्विच का रंग विषय की ज़िम्मेदारी है, afaik। तो मैं सुझाव दूंगा कि आप एक विषय की सेटिंग्स को कैसे बदल सकते हैं इस पर एक नज़र डालें। या आप नए रंगों के साथ एक कस्टम थीम बना सकते हैं।