EditText在text属性下面加下划线

时间:2014-01-31 12:44:24

标签: android login android-edittext

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

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

我附上了一张图片:

enter image description here

14 个答案:

答案 0 :(得分:85)

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

设置颜色:

editText.getBackground().setColorFilter(color, PorterDuff.Mode.SRC_IN);

删除颜色:

editText.getBackground().clearColorFilter();

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

API参考:

Drawable#setColorFilter

Drawable#clearColorFilter

答案 1 :(得分:78)

android:backgroundTint="" xml布局中使用EditText

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

答案 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>
    
  2. 只需在EditText

    中执行此操作即可
    <EditText
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       style="@style/EditTextCustomHolo"/>
    
  3. 就是这样,我希望它可以帮到你。

答案 3 :(得分:20)

这适用于新旧版本的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>

现在在您的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"/>

修改

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

this thread中讨论了此问题。 (我没有亲自试过这个解决方案)

答案 4 :(得分:17)

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

<item name="android:textColorSecondary">@color/primary_text_color</item> 

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

  <item name="android:colorControlActivated">@color/black</item>

以主题样式设置此功能非常适合更改edittext下划线的颜色。

答案 5 :(得分:12)

因此,您需要在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>

在EditText中,设置

android:background="@drawable/your_drawable"

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

答案 6 :(得分:9)

在您的应用样式中,定义属性 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>

答案 7 :(得分:2)

您只需使用以下代码行即可以编程方式更改EditText的颜色:

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

答案 8 :(得分:1)

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

在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>

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

android:background="@drawable/abc"

答案 9 :(得分:1)

要更改底线颜色,您可以在应用主题中使用此颜色:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>

    <item name="colorControlNormal">#c5c5c5</item>
    <item name="colorControlActivated">#ffe100</item>
    <item name="colorControlHighlight">#ffe100</item>
</style>

要更改浮动标签颜色,请写下以下主题:

<style name="TextAppearence.App.TextInputLayout" parent="@android:style/TextAppearance">
<item name="android:textColor">#4ffd04[![enter image description here][1]][1]</item>
</style>

并在您的布局中使用此主题:

 <android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="20dp"
    app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout">

    <EditText
        android:id="@+id/edtTxtFirstName_CompleteProfileOneActivity"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:capitalize="characters"
        android:hint="User Name"
        android:imeOptions="actionNext"
        android:inputType="text"
        android:singleLine="true"
        android:textColor="@android:color/white" />

</android.support.design.widget.TextInputLayout>

enter image description here

答案 10 :(得分:0)

如果您不必支持API&lt; 21,在xml中使用backgroundHint,例如:

 <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="textPersonName"
            android:hint="Task Name"
            android:ems="10"
            android:id="@+id/task_name"
            android:layout_marginBottom="15dp"
            android:textAlignment="center"
            android:textColor="@android:color/white"

            android:textColorLink="@color/blue"
            android:textColorHint="@color/blue"
            android:backgroundTint="@color/lighter_blue" />

为了获得更好的支持和后备,请使用@Akariuz解决方案。 backgroundHint是最无痛的解决方案,但不能向后兼容,根据您的要求拨打电话。

答案 11 :(得分:0)

更改colorAccent所需的颜色,并在colorAccent上设置该颜色,然后运行即可得到输出

答案 12 :(得分:0)

您可以使用AppCompatEditText和颜色选择器来做到这一点:

            <androidx.appcompat.widget.AppCompatEditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:backgroundTint="@color/selector_edittext_underline" />

selector_edittext_underline.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/focused_color" 
          android:state_focused="true" />
    <item android:color="@color/hint_color" />
</selector>

注意:将选择器文件放在res/color文件夹中,而不要放在res/drawable文件夹中。通常res/color不存在,我们可能必须创建它。

答案 13 :(得分:0)

只需将xml代码中的android:backgroundTint更改为您的颜色