首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式更改TextInputLayout强调色

以编程方式更改TextInputLayout强调色
EN

Stack Overflow用户
提问于 2015-09-07 22:17:16
回答 2查看 8.8K关注 0票数 15

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

现在我想知道如何以编程方式更改强调色(下划线,突出显示时为hintTextColor )。我似乎在TextInputLayout中找不到合适的方法。

有什么建议吗?提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2016-06-10 18:59:40

IMHO InputTextLayout不能以编程方式更改标签颜色,因为它是由样式设置的。我检查了InputTextLayout的源代码,并编写了这个hack helper方法来创建对私有颜色成员的访问:

代码语言:javascript
复制
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,用于设置标签的颜色。

票数 19
EN

Stack Overflow用户

发布于 2015-09-28 16:05:37

您可以尝试对文本执行此操作,

代码语言:javascript
复制
InputTextLayout.getEditText().setHighlightColor(yourColor);
InputTextLayout.getEditText().setHintTextColor(yourColor);

这是EditText底部的那一行

代码语言:javascript
复制
Drawable background = InputTextLayout.getEditText().getBackground();
DrawableCompat.setTint(background, yourColor);
InputTextLayout.getEditText().setBackground(background);

希望它能起作用!

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32440811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档