IMHO InputTextLayout kann Beschriftungsfarbe programmgesteuert nicht ändern, da es nach Stil festgelegt ist. Ich untersuchte Quellcode InputTextLayout und schrieb diese Hack Hilfsmethode, die den Zugang zu privatem Farbelement zu erstellen:
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 für eingestellte interne CollapsingTextHelper.mCollapsedTextColor verwendet wird, die Farbe des Etiketts setzt.
Nein, es funktioniert nicht! – sud007
@ sud007 Ich versuche das auch und ich bestätigte, dass das nicht funktioniert. Du kannst meine Lösung (meine Antwort in dieser Frage) ausprobieren, die für mich funktioniert. –