以编程方式更改TextInputLayout重音颜色

我有一个简单的TextInputLayout包含一个EditText视图。

现在我想知道如何以编程方式更改重音颜色(突出显示时加下划线,hintTextColor)。 我似乎无法在TextInputLayout中find合适的方法。

有什么build议么? 提前致谢。

Solutions Collecting From Web of "以编程方式更改TextInputLayout重音颜色"

恕我直言,InputTextLayout不能以编程方式更改标签颜色,因为它是由样式设置的。 我检查了InputTextLayout的源代码,并写了这个创build对私有颜色成员的访问的黑客帮手方法:

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。

你可以尝试这个文本,

 InputTextLayout.getEditText().setHighlightColor(yourColor); InputTextLayout.getEditText().setHintTextColor(yourColor); 

而这对于EditText底部的行

 Drawable background = InputTextLayout.getEditText().getBackground(); DrawableCompat.setTint(background, yourColor); InputTextLayout.getEditText().setBackground(background); 

希望它的作品!