EditText在text属性下面加下划线

And*_*ast 103 android login android-edittext

我想改变编辑文本下面的蓝色,我不知道它是什么属性.

我尝试使用不同的背景颜色,但它不起作用.

我在下面附上了一张图片:

在此输入图像描述

Jin*_* Li 87

实际上,以编程方式设置EditText的下划线颜色相当容易(只需一行代码).

设置颜色:

editText.getBackground().setColorFilter(color, PorterDuff.Mode.SRC_IN);
Run Code Online (Sandbox Code Playgroud)

要删除颜色:

editText.getBackground().clearColorFilter();
Run Code Online (Sandbox Code Playgroud)

注意:当EditText具有焦点时,您设置的颜色将不会生效,而是具有焦点颜色.

API参考:

可绘制#setColorFilter

可绘制#clearColorFilter

  • 也适用于Android的Xamarin,在自定义渲染器OnElementChanged中你可以做`Control.Background.SetColorFilter(Android.Graphics.Color.White,PorterDuff.Mode.SrcIn);` (4认同)

Soh*_*shi 81

使用android:backgroundTint=""你的EditTextXML布局.

对于api <21,您可以使用AppCompatEditText支持库app:backgroundTint=""

  • 这仅适用于api 21及以上版本.没有向后支持. (14认同)
  • 要使此属性在21以下的API中工作,您应该使用app(xmlns:app ="http://schemas.android.com/apk/res-auto")命名空间而不是android. (4认同)
  • 对于api <21的设备,`android:background ="@ null"`. (3认同)
  • 这是迄今为止最简单,最简洁的解决方案. (2认同)

小智 38

对于EditText焦点,启用,激活的每个状态,您必须使用不同的背景图像,而不是颜色.

http://android-holo-colors.com/

在上面的网站中,您可以从Holo主题中的许多组件中获取图像.只需选择"EditText"和您想要的颜色即可.您可以在页面底部看到预览.

下载.zip文件,然后复制粘贴项目中的资源(图像和XML).

如果你的XML被命名为:apptheme_edit_text_holo_light.xml(或类似的东西):

  1. 转到XML"styles.xml"并添加自定义EditText样式:

    <style name="EditTextCustomHolo" parent="android:Widget.EditText">
       <item name="android:background">@drawable/apptheme_edit_text_holo_light</item>
       <item name="android:textColor">#ffffff</item>
    </style>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 只需在你的EditText:

    <EditText
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       style="@style/EditTextCustomHolo"/>
    
    Run Code Online (Sandbox Code Playgroud)

就是这样,我希望它对你有所帮助.


Suf*_*ian 21

这适用于新旧版本的Android(即使在API 10上也能正常工作!).

在您的styles.xml:中定义此样式:

<style name="EditText.Login" parent="Widget.AppCompat.EditText">
    <item name="android:textColor">@android:color/white</item>
    <item name="android:textColorHint">@android:color/darker_gray</item>
    <item name="colorAccent">@color/blue</item>
    <item name="colorControlNormal">@color/blue</item>
    <item name="colorControlActivated">@color/blue</item>
</style>
Run Code Online (Sandbox Code Playgroud)

现在在您的XML中,将其设置为主题和样式(要设置的样式textColor,以及设置所有其他内容的主题):

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="text"
    style="@style/EditText.Login"
    android:theme="@style/EditText.Login"/>
Run Code Online (Sandbox Code Playgroud)

编辑

此解决方案在较新的Android版本(Lollipop或Marshmallow以上)上导致微小的UI故障,选择句柄加下划线.

此问题在此主题中讨论.(我没有亲自试过这个解决方案)


Dha*_*mar 17

您可以更改在styles.xml中指定它的EditText颜色的下划线.在您的应用主题styles.xml中添加以下内容.

<item name="android:textColorSecondary">@color/primary_text_color</item> 
Run Code Online (Sandbox Code Playgroud)

正如ana在评论部分所指出的那样

  <item name="android:colorControlActivated">@color/black</item>
Run Code Online (Sandbox Code Playgroud)

在主题样式中设置此项适用于更改edittext下划线的颜色.

  • 由于导航栏着色问题,我最终使用了`<item name ="colorControlNormal"> @ color/edittext_underline_color </ item>`而不是textColorSecondary. (7认同)
  • 请注意,`android:textColorSecondary`也用于确定ActionBar中后箭头和'DrawerLayout`汉堡包图标的颜色. (3认同)

Vul*_*sin 13

因此,您需要在drawable文件夹中创建一个新的.xml文件.

在该文件中粘贴此代码:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
   <item
    android:bottom="8dp"
    android:left="-3dp"
    android:right="-3dp"
    android:top="-3dp">
    <shape android:shape="rectangle">
     <stroke
       android:width="1dp"
       android:color="@color/white"/>
     </shape>
   </item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

在EditText中,设置

android:background="@drawable/your_drawable"
Run Code Online (Sandbox Code Playgroud)

您可以使用可绘制的xml,设置角落,填充等.


Rob*_*rto 9

在您的app风格中定义属性colorAccent.在这里你找到一个例子

<style name="AppTheme" parent="Theme.AppCompat.Light">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/action_bar</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/action_bar</item>
</style>
Run Code Online (Sandbox Code Playgroud)


mat*_*ani 5

您可以轻松地使用这行代码以编程方式更改 EditText 的颜色:

edittext.setBackgroundTintList(ColorStateList.valueOf(yourcolor));


Inn*_*ler 0

使用下面的代码更改编辑文本边框的背景颜色。

在drawable下创建新的XML文件。

abc.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#00000000" />
    <stroke android:width="1dip" android:color="#ffffff" />
</shape>
Run Code Online (Sandbox Code Playgroud)

并将其添加为编辑文本的背景

android:background="@drawable/abc"
Run Code Online (Sandbox Code Playgroud)