आईएमएचओ इनपुट टेक्स्टक्लेआउट लेबल रंग को प्रोग्रामेटिक रूप से नहीं बदल सकता है, क्योंकि यह शैली द्वारा सेट किया गया है। मैं 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 जो लेबल का रंग सेट के लिए प्रयोग किया जाता है।
स्रोत
2016-06-10 10:59:40
नहीं, यह काम नहीं करता है! – sud007
@ sud007 मैं इसे भी आजमाता हूं और मैंने पुष्टि की है कि यह काम नहीं करता है। आप मेरे समाधान (इस प्रश्न में मेरा जवाब) का प्रयास कर सकते हैं जो मेरे लिए काम किया जाता है। –