プログラムで使用できるもの:
/* 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})
説明:
カラーリソースからintカラー値を取得します(Androidで使用されるRGBカラーを提示する方法)。ColorEnabledを作成しましたが、実際には、この回答ではColorHintExpandedおよびColorViewCollapsedである必要があります。とにかく、これはビュー「TextInputLayout」のヒントがExpandedまたはCollapsed状態のときに表示される色です。ビューの関数 "setDefaultHintTextColor"の次の配列を使用して設定します。リファレンス:
TextInputLayoutのリファレンス-このページでメソッド "setDefaultHintTextColor"を検索して詳細を確認してください
上記のドキュメントを見ると、関数がColorStateListを使用してExpanded&Collapsedヒントの色を設定していることがわかります。
ColorStateListドキュメント
ColorStateListを作成するには、最初に、必要な状態(私の場合、state_enabled&state_disabled(TextInputLayoutでは、Hint ExpandedおよびHint Collapsedに等しい)を含むマトリックスを作成しましたテストを行うだけです])。次に、ColorStateListのコンストラクターに、カラーリソースのint値の配列を渡します。これらの色は、状態行列と対応しています(colors配列のすべての要素は、同じ位置の状態行列のそれぞれの配列に対応しています)。したがって、colors配列の最初の要素は、状態行列の最初の配列のすべての状態の色として使用されます(この場合、配列には1つの要素しかありません:有効な状態= TextInputLayutの拡張状態のヒント)。最後の状態には正/負の値があり、正の値しかありません、
これがお役に立てば幸いです。さようなら、素敵なコーディング(: