【问题标题】:Changing the color of EditText's underline更改 EditText 下划线的颜色
【发布时间】:2017-07-23 22:08:03
【问题描述】:

我尝试在this thread. 的帮助下更改我的 EditText 的下划线颜色

我做了同样的事情 - 这是 EditTextandroid:background 设置为 @drawable/edt_bg_selector

<EditText
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:ems="10"
         android:id="@+id/editText4"
         android:layout_weight="1"
         android:elevation="0dp"
         android:background="@drawable/edt_bg_selector" />

我的edt_bg_selector

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true" android:drawable="@drawable/edt_bg_selected" />
    <item android:state_focused="false" android:drawable="@drawable/edt_bg_normal" />
</selector>

...edt_bg_normal.xml...

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:bottom="1dp"
        android:left="-2dp"
        android:right="-2dp"
        android:top="-2dp">
        <shape android:shape="rectangle" >
            <stroke
                android:width="1px"
                android:color="@color/colorWhite" />

            <solid android:color="#00FFFFFF" />

            <padding
                android:bottom="5dp"
                android:left="5dp"
                android:right="5dp"
                android:top="5dp" />
        </shape>
    </item>
</layer-list>

...最后一个,edt_bg_selected.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:bottom="1dp"
        android:left="-2dp"
        android:right="-2dp"
        android:top="-2dp">
        <shape android:shape="rectangle" >
            <stroke
                android:width="1px"
                android:color="@color/colorWhite" />

            <solid android:color="#00FFFFFF" />

            <padding
                android:bottom="5dp"
                android:left="5dp"
                android:right="5dp"
                android:top="5dp" />
        </shape>
    </item>
</layer-list>

通过这段代码,我可以在 Android Studio 的设计编辑器中看到下划线的颜色变为白色。但是当我在 android 设备上运行这个项目时,还没有进行更改。选中的EditText 的下划线是我的primaryColor,未选中的EditText 是黑色的。

Android Studio 设计编辑器:

项目在安卓设备上运行:

这与我的应用程序选择的主题有什么关系吗?或者我错过了什么?

【问题讨论】:

    标签: android android-edittext underline


    【解决方案1】:
    <EditText
        android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="Something or Other"
                android:backgroundTint="@android:color/holo_green_light" />
    

    注意:仅适用于 AP lvl 21 或更高。

    【讨论】:

      【解决方案2】:

      将这些属性添加到您的活动主题中:

      <style name="AppTheme" parent="Theme.AppCompat">
          <item name="colorControlNormal">@android:color/white</item>
          <item name="colorControlActivated">@android:color/white</item>
          <item name="colorControlHighlight">@android:color/white</item>
      </style>
      

      【讨论】:

        【解决方案3】:

        只需以编程方式实现这一行:

        inputText.getBackground().setColorFilter(ContextCompat.getColor(this, R.color.error), PorterDuff.Mode.SRC_ATOP);

        inputText 是您的 EditText 对象。

        【讨论】:

        • 我试过了,它也有效。只有一件事 - 在 Android 6.0 Marshmallow (API 23) 上,context.getResources().getColor() 已被弃用,因此我使用了 ContextCompat.getColor()。我的问题的解决方案在我上面的评论中谢谢
        • 我认为当你失去焦点时,它会保持那个颜色(它应该回到默认颜色)
        【解决方案4】:

        好的,我不知道发生了什么,但我在上面发布的代码可以正常工作。我没有改变任何东西,但我重新启动了 Android Studio。

        在发布此内容之前,我在 Build > Rebuild Project 下进行了项目重建,但没有帮助。

        如果有人能解释为什么会发生这种情况或在这种情况下我应该怎么做,我将不胜感激,但问题已经解决了。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-09-05
          • 2012-09-15
          • 2017-08-03
          • 2016-06-15
          • 1970-01-01
          • 1970-01-01
          • 2019-09-28
          相关资源
          最近更新 更多