我有一个包含EditText视图的简单TextInputLayout。
现在我想知道如何以编程方式更改强调色(下划线,突出显示时为hintTextColor )。我似乎在TextInputLayout中找不到合适的方法。
有什么建议吗?提前谢谢。
发布于 2016-06-10 18:59:40
IMHO InputTextLayout不能以编程方式更改标签颜色,因为它是由样式设置的。我检查了InputTextLayout的源代码,并编写了这个hack helper方法来创建对私有颜色成员的访问:
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,用于设置标签的颜色。
发布于 2015-09-28 16:05:37
您可以尝试对文本执行此操作,
InputTextLayout.getEditText().setHighlightColor(yourColor);
InputTextLayout.getEditText().setHintTextColor(yourColor);这是EditText底部的那一行
Drawable background = InputTextLayout.getEditText().getBackground();
DrawableCompat.setTint(background, yourColor);
InputTextLayout.getEditText().setBackground(background);希望它能起作用!
https://stackoverflow.com/questions/32440811
复制相似问题