両方の変更Focused Color
とDefault Text Color
TextInput レイアウトの場合
private void setInputTextLayoutColor(int color, TextInputLayout textInputLayout) {
try {
Field field = textInputLayout.getClass().getDeclaredField("mFocusedTextColor");
field.setAccessible(true);
int[][] states = new int[][]{
new int[]{}
};
int[] colors = new int[]{
color
};
ColorStateList myList = new ColorStateList(states, colors);
field.set(textInputLayout, myList);
Field fDefaultTextColor = TextInputLayout.class.getDeclaredField("mDefaultTextColor");
fDefaultTextColor.setAccessible(true);
fDefaultTextColor.set(textInputLayout, myList);
Method method = textInputLayout.getClass().getDeclaredMethod("updateLabelState", boolean.class);
method.setAccessible(true);
method.invoke(textInputLayout, true);
} catch (Exception e) {
e.printStackTrace();
}
}
EDIT : AppCompactEditText の線の色を変更するには
backgroundTintList
の(またはsupportBackgroundTintList
) を、色合いを変更したい色のみを含むEditText
のインスタンスに設定する必要があります。ColorStateList
下位互換性のある方法でこれを行う簡単な方法は、次のようになります。
ColorStateList colorStateList = ColorStateList.valueOf(color)
editText.setSupportBackgroundTintList(colorStateList)
これによりEditText
、目的の下線の色が得られます。