私は、EditText Viewを含む単純なTextInputLayoutを持っています。TextInputLayoutアクセントの色をプログラムで変更する
ここでは、プログラムで強調表示の色(下線、強調表示されたhintTextColor)を変更する方法を知りました。 TextInputLayout内で適切なメソッドが見つからないようです。
提案がありますか?前もって感謝します。
私は、EditText Viewを含む単純なTextInputLayoutを持っています。TextInputLayoutアクセントの色をプログラムで変更する
ここでは、プログラムで強調表示の色(下線、強調表示されたhintTextColor)を変更する方法を知りました。 TextInputLayout内で適切なメソッドが見つからないようです。
提案がありますか?前もって感謝します。
あなたはそれが機能ホープのEditText
Drawable background = InputTextLayout.getEditText().getBackground();
DrawableCompat.setTint(background, yourColor);
InputTextLayout.getEditText().setBackground(background);
の下部にあるラインの
InputTextLayout.getEditText().setHighlightColor(yourColor);
InputTextLayout.getEditText().setHintTextColor(yourColor);
と、この、テキストのためにこれを試すことができます!
IMHO InputTextLayoutはスタイルで設定されているため、ラベルの色をプログラムによって変更することはできません。私は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のために使用されています。
いいえ動作しません! – sud007
@ sud007私もこれを試して、私は動作しないことを確認しました。あなたは私のために働いている私の解決策(この質問で私の答え)を試すことができます。 –