如何在Android 4.0及以上版本中更改EditText下划线的颜色?

5

我的应用程序使用了Theme.Holo主题,但我想要改变EditText下划线边框的颜色。

我不想要完整的边框,只是想要在Android 4.0及以上版本中更改EditText布局的颜色。

我该怎么做呢?

5个回答

5
您可以使用9patch。这个资源是一个很好的例子:Android Holo

你有教程或其他东西吗,可以解释如何实现它吗? - silvia_aut
http://developer.android.com/tools/help/draw9patch.html或者,Android-holo-colors可以为您生成9patch文件。 - getKonstantin

4
int color = Color.parse("#HEX")
editText.getBackground().setColorFilter(color, PorterDuff.Mode.SRC_ATOP);

3
对于那些想要更完整答案的人。默认颜色实际上是一个9-图背景。所以您需要替换它。
前往http://android-holo-colors.com/。在这里,您将看到一个名为“color”的类别。
单击旁边的彩色正方形,您将看到一个颜色样本出现。将颜色更改为所需颜色。
向下滚动并找到另一个名为EditText的类别。单击旁边的是按钮。
最后,向下滚动到页面底部并下载生成的zip文件。
在计算机上解压缩zip。您将找到几个可根据不同像素密度进行绘制的文件夹。将其复制到项目中的适当文件夹中。
还将有一个名为“drawable”的文件夹。其中将是一个xml文件。如果您有一个名为“drawable”的文件夹,不同于“drawable-mdpi、drawable-hdpi”等,请将xml文件复制到“drawable”文件夹中,否则请在“res”文件夹中创建一个文件夹。
最后,复制xml文件的名称。进入您想要更改的EditText并将xml文件设置为背景。如果您的xml文件名为edit_text_holo_light,则您在EditText中放置的xml代码应为:
android:background="@drawable/edit_text_holo_light

保存项目并运行。


这会导致整个EditText(而不仅仅是下划线)的颜色都改变。 - IgorGanapolsky
@IgorGanapolsky 不一定。背景、下划线等都是从那个文件设置的。在这种情况下,EditText 的其余部分保持不变。只有下划线被更改。 - Visionwriter
1
@IgorGanapolsky 你一定在代码中做了一些更改。这张图片看起来不像是Android 4.x的设计模式。我目前正在我的一个应用程序中使用上面的解决方案,它运行良好。我只改变了下划线。还要确保你在上面的链接中选择了正确的兼容性和主题。 - Visionwriter

3
我认为您可以将android:background更改为所需的drawable,以替换编辑文本的默认背景。

我将您的答案与Peregreen的答案结合起来。我从http://android-holo-colors.com/下载了一个9patch文件,并在此可绘制对象上设置了android:background。 - silvia_aut

2
在您的EditText XML布局中使用android:backgroundTint=""。

1
backgroundTint 是 API 21 及以上版本可用。 - IgorGanapolsky
1
是的,但你总是可以使用AppCompat视图,如Support库中的AppCompatEditText。 - Soheil Setayeshi
@SoheilSetayeshi 我认为AppCompat版本的小部件是用于将它们扩展到自定义实现中的。例如,如果您使用"SwitchCompat",Android默认情况下仍将使用常规的"Switch"小部件。 - Nick H
通过使用AppCompat小部件,如AppCompatEditText,您可以使用mEditText.setSupportBackgroundTintList()而不是需要API 21的mEditText.setBackgroundTintList()来为EditText着色。@hitch.united - Soheil Setayeshi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接