2015-09-07 6 views
9

बदलें मेरे पास एक सरल टेक्स्ट इनपुट आउटआउट है जिसमें एक संपादन टेक्स्ट दृश्य है।TextInputLayout उच्चारण रंग प्रोग्रामेटिक रूप से

अब मुझे आश्चर्य है कि उच्चारण रंग (अंडरलाइन, hintTextColor जब हाइलाइट किया गया) को प्रोग्रामेटिक रूप से कैसे बदला जाए। मुझे TextInputLayout के अंदर एक उपयुक्त विधि नहीं मिल रही है।

कोई सुझाव? अग्रिम में धन्यवाद।

उत्तर

3

आप पाठ के लिए इस कोशिश कर सकते हैं,

InputTextLayout.getEditText().setHighlightColor(yourColor); 
InputTextLayout.getEditText().setHintTextColor(yourColor); 

और इस EditText

Drawable background = InputTextLayout.getEditText().getBackground(); 
DrawableCompat.setTint(background, yourColor); 
InputTextLayout.getEditText().setBackground(background); 

आशा है कि यह काम करता है के तल पर लाइन के लिए!

+1

नहीं, यह काम नहीं करता है! – sud007

+2

@ sud007 मैं इसे भी आजमाता हूं और मैंने पुष्टि की है कि यह काम नहीं करता है। आप मेरे समाधान (इस प्रश्न में मेरा जवाब) का प्रयास कर सकते हैं जो मेरे लिए काम किया जाता है। –

15

आईएमएचओ इनपुट टेक्स्टक्लेआउट लेबल रंग को प्रोग्रामेटिक रूप से नहीं बदल सकता है, क्योंकि यह शैली द्वारा सेट किया गया है। मैं InputTextLayout के स्रोत कोड की जांच की और इस हैक सहायक विधि है जो निजी रंग सदस्य के लिए उपयोग बनाने लिखा है:

public static void setInputTextLayoutColor(EditText editText, @ColorInt int color) { 
    TextInputLayout til = (TextInputLayout) editText.getParent(); 
    try { 
     Field fDefaultTextColor = TextInputLayout.class.getDeclaredField("mDefaultTextColor"); 
     fDefaultTextColor.setAccessible(true); 
     fDefaultTextColor.set(til, new ColorStateList(new int[][]{{0}}, new int[]{ color })); 

     Field fFocusedTextColor = TextInputLayout.class.getDeclaredField("mFocusedTextColor"); 
     fFocusedTextColor.setAccessible(true); 
     fFocusedTextColor.set(til, new ColorStateList(new int[][]{{0}}, new int[]{ color })); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

mFocusedTextColor सेट आंतरिक CollapsingTextHelper.mCollapsedTextColor जो लेबल का रंग सेट के लिए प्रयोग किया जाता है।

+0

यह ठीक काम करता है! – sud007

+0

धन्यवाद .. इससे हमें बहुत मदद मिलती है –

+1

पुष्टि कर सकता है, मैंने स्रोत को देखा है और वे शैलियों और विशेषताओं का उपयोग कर रहे हैं, इसलिए आप इसे प्रोग्रामिक रूप से नहीं कर सकते हैं। यह प्रतिबिंब-आधारित दृष्टिकोण आपका सबसे अच्छा विकल्प है। अन्य विकल्प कक्षा की प्रतिलिपि बनाना और रंगों को व्यवस्थित रूप से सेट करने के लिए सहायक विधियां जोड़ना होगा। – ashishduh

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