我想更改编辑文本下面的蓝色,我不知道它是什么属性。
我尝试使用不同的背景颜色,但它不起作用。
我附上了一张图片:
答案 0 :(得分:85)
以编程方式设置EditText的下划线颜色实际上相当容易(只需一行代码)。
设置颜色:
editText.getBackground().setColorFilter(color, PorterDuff.Mode.SRC_IN);
删除颜色:
editText.getBackground().clearColorFilter();
注意:当EditText开启焦点时,您设置的颜色不会生效,而是具有焦点颜色。
API参考:
答案 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(或类似的东西):
转到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>
只需在EditText
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/EditTextCustomHolo"/>
就是这样,我希望它可以帮到你。
答案 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>
答案 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更改为您的颜色