Programmatisch können Sie verwenden:
/* Here you get int representation of an HTML color resources */
int yourColorWhenEnabled = ContextCompat.getColor(getContext(), R.color.your_color_enabled);
int yourColorWhenDisabled = ContextCompat.getColor(getContext(), R.color.your_color_disabled);
/* Here you get matrix of states, I suppose it is a matrix because using a matrix you can set the same color (you have an array of colors) for different states in the same array */
int[][] states = new int[][]{new int[]{android.R.attr.state_enabled}, new int[]{-android.R.attr.state_enabled}};
/* You pass a ColorStateList instance to "setDefaultHintTextColor" method, remember that you have a matrix for the states of the view and an array for the colors. So the color in position "colors[0x0]" will be used for every states inside the array in the same position inside the matrix "states", so in the array "states[0x0]". So you have "colors[pos] -> states[pos]", or "colors[pos] -> color used for every states inside the array of view states -> states[pos] */
myTextInputLayout.setDefaultHintTextColor(new ColorStateList(states, new int[]{yourColorWhenEnabled, yourColorWhenDisabled})
Erklärung:
Holen Sie sich den int-Farbwert von einer Farbressource (eine Möglichkeit, die von Android verwendeten RGB-Farben darzustellen). Ich habe ColorEnabled geschrieben, aber für diese Antwort sollte es eigentlich ColorHintExpanded & ColorViewCollapsed sein. Auf jeden Fall ist dies die Farbe, die Sie sehen, wenn sich der Hinweis einer Ansicht "TextInputLayout" im Status "Erweitert" oder "Reduziert" befindet. Sie legen es fest, indem Sie das nächste Array für die Funktion "setDefaultHintTextColor" der Ansicht verwenden. Referenz:
Referenz für TextInputLayout - Suchen Sie auf dieser Seite nach der Methode "setDefaultHintTextColor", um weitere Informationen zu erhalten
Wenn Sie sich die obigen Dokumente ansehen, können Sie sehen, dass die Funktionen die Farben für den erweiterten und reduzierten Hinweis mithilfe einer ColorStateList festlegen.
ColorStateList-Dokumente
Um die ColorStateList zu erstellen, habe ich zuerst eine Matrix mit den gewünschten Status erstellt, in meinem Fall state_enabled & state_disabled (die in TextInputLayout gleich Hint Expanded und Hint Collapsed sind [Ich erinnere mich nicht, in welcher Reihenfolge lol, jedenfalls habe ich sie gefunden mache nur einen Test]). Dann übergebe ich die Arrays mit int-Werten der Farbressourcen an den Konstruktor der ColorStateList. Diese Farben entsprechen der Zustandsmatrix (jedes Element im Farbarray entspricht dem jeweiligen Array in der Zustandsmatrix an derselben Position). Das erste Element des Farbarrays wird also als Farbe für jeden Status im ersten Array der Statusmatrix verwendet (in unserem Fall hat das Array nur 1 Element: enabled state = erweiterter Hinweisstatus für TextInputLayut). Letzte Dinge Zustände haben positive / negative Werte, und Sie haben nur die positiven Werte,
Hoffe das ist hilfreich. Tschüss, hab eine schöne Codierung (: