如何更改EditText底部线条的颜色?

3

我知道这个问题以前已经被问过了,但是那些解决方案在我的情况下都不起作用。我想改变编辑文本的底部线条颜色,并尝试了其他链接中的解决方案,将以下行添加到styles.xml主题中:

<item name="colorControlNormal">#c5c5c5</item>

但是在我的情况下,这种方法似乎不起作用。我尝试更改基础主题,但仍然对我无效。 而且我想在我的应用程序中对所有editext进行此操作,而不仅仅是一个。 有其他方法可以做到吗?


你是否正在使用AppCompact Activity? - Madhur
检查 #Rohit Heera的答案 - IntelliJ Amiya
请发布您的布局和样式文件代码。 - Akash Jagtap
7个回答

3

编辑位于 values 文件夹下的 Style.xml。

<style name="Theme.App.Base" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorControlNormal">#c5c5c5</item>
    <item name="colorControlActivated">#c5c5c5</item>
    <item name="colorControlHighlight">#c5c5c5</item>
</style>

我写了一些代码,但它不起作用。为什么你不仔细阅读问题呢? - Vivek Mishra
你没有添加colorControlActivated和colorControlHighlight吗? - Sharath
我不想要它们,所以我没有添加它们。 - Vivek Mishra
我能够改变激活的颜色,但是一些正常状态下的颜色似乎无法工作。 - Vivek Mishra

1
在drawable文件夹中创建一个名为edittextborder.xml的文件,并编写以下内容。
 ?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">

        <item><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
                <solid android:color="#ffffff" />


            </shape></item>

    </selector>

并将此文件设置为:

android:background="@drawable/edittextborder"

在编辑文本框中。

我不希望在选择编辑文本时出现它。我希望它默认为白色。 - Vivek Mishra
是的,它使您的EditText默认情况下不处于选中状态。 - Rohit Heera
好的,让我试一下,然后再告诉你。 - Vivek Mishra
这将使用形状中提供的颜色填充整个EditText。 - Vivek Mishra
你应该设置透明颜色而不是白色。 - Rohit Heera
显示剩余2条评论

1
这可以通过使用 XML 进行更改:


android:backgroundTint="@color/blue"

tint 需要最低的 Android 版本为 21。 - Vivek Mishra
当它没有焦点时,您想要底线保持相同的颜色吗? - Jigar Shekh
问题现在已经解决,但是你在询问。当活动打开时,所有的editext底部线条颜色都是黑色的,当焦点集中时颜色会变成白色。白色部分是理想的行为,但我希望当没有焦点时能够改变颜色。 - Vivek Mishra

0

我更喜欢使用9 patch图像来自定义编辑文本的颜色。 Android 9 patch generator online

这是一个非常棒的在线工具生成器,适用于所有小部件。Android Holo colors

生成并下载到每个dpi文件夹中,并使用背景应用它。


0
解决方案如下:
  1. 请访问Android Holo Colors Generator
  2. 提供一个主题名称并选择您想要的颜色。
  3. 选择您想要更改颜色的组件。在您的情况下,它是Edittext。
  4. 最后点击下载Zip。
  5. 解压缩Zip并在您的项目中使用它。

0

试试这个,

.xml 文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="5dp"
    android:padding="5dp">

    <EditText
        android:id="@+id/text_to"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/customborder" //.xml file for edittext
        android:clickable="true"
        android:padding="5dip"
        android:text="Text_to"
        android:textColor="@color/black"
        android:textSize="@dimen/font_normal_size" />
</LinearLayout>

customborder.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners
        android:radius="2dp"
        android:topRightRadius="0dp"
        android:bottomRightRadius="0dp"
        android:bottomLeftRadius="0dp" />
    <stroke
        android:width="1dp"
        android:color="@android:color/white" />
</shape>

你的问题解决了吗?@Vivek Mishra - Amit Vaghela
不要创建完整的边框,包括所有边。 - Vivek Mishra

0
使用Rohit的答案以及从这个链接Android底部描边提供的技巧,我能够实现我想要的行为。以下是drawable文件夹文件的代码。
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <shape android:shape="rectangle" >
            <solid android:color="@android:color/transparent" />
        </shape>
    </item>

    <item android:top="-2dp" android:right="-2dp" android:left="-2dp">
        <shape>
            <solid android:color="@android:color/transparent" />
            <stroke

                android:width="1dp"
                android:color="#FFFFFF" />
        </shape>
    </item>

</layer-list>

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