更改 TextView 的下划线颜色

Change underline color for TextView

如何更改 Android 中 TextView 的下划线颜色?想要的结果如下图:

默认是某种蓝色(可能是全息蓝色),但我需要将其更改为橙色。问题是,我不知道这到底是怎么叫的(这是下划线、指示符还是什么?),所以我无法 google 我自己。

谢谢

您有两个选项,对于基本编辑文本,您可以使用其中任何一个。第二个选项未包含在 karaokyo 标记的问题中,我更喜欢减小应用程序大小。

您可以使用 Android Holo Colors 网络应用程序生成自定义主题,您可以选择颜色和所需的控件,它会生成 9 个补丁和适当的主题文件。 可能需要一些修改才能使其适合您当前的项目,但您所需要的只是在生成的 zip 中。

或者使用 Android 5,您可以使用 Widget Tinting,旧的 Android 版本也支持使用 AppCompat v21。这会为您完成所有着色,而无需包含所有额外资源。请注意,这并不适用于所有地方,但如果您在 activity 上使用普通编辑文本,它应该没问题。实施的完整细节 here

我是这样处理的:

想法是更改文本框的背景,即包含下划线颜色的背景,背景是绘制线条的背景。颜色由 "Tint" 控制,但是如果您直接从控件更改色调,您将更改使用该背景实例的所有控件的色调,即应用程序中的所有 TextViews 小部件。如果您只需要更改单个控件的颜色,则需要克隆可绘制的背景并修改它的色调。 Mutate 是实际创建新实例的方法。

我的示例是 xamarin 自定义渲染器的一部分,但它可以简单地应用于 java,如果您将方法名称切换为小写,我认为。

    var background = YourTextView.Background.GetConstantState().NewDrawable();
    background.Mutate();
    background.SetTint(newLineColor.ToAndroid());
    YourTextView.SetBackground(background);