如何更改EditText中的线条颜色

我在我的布局xml文件中创build一个EditText

但是我想在EditText中把Holo的颜色改成(例如)红色。 如何做到这一点?

在这里输入图像说明

这是您可以用于所有视图的最佳工具,并且免费得到@ JérômeVan Der Linden 。

Android Holo颜色生成器允许您轻松地为您的Android应用程序创buildAndroid组件,例如EdiText或微调器以及自己的颜色。 它将生成所有必需的九个修补程序资产以及相关的XML可绘制和样式,您可以直接复制到您的项目中。

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

尝试一下

这个图像放在EditText背景中

 android:background="@drawable/textfield_activated" 

在这里输入图像说明


UPDATE

对于API 21或更高版本,您可以使用android:backgroundTint

 <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Underline color change" android:backgroundTint="@android:color/holo_red_light" /> 

现在更新2 AppCompatEditText

注意:我们需要使用app:backgroundTint代替android:backgroundTint

 <android.support.v7.widget.AppCompatEditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Underline color change" app:backgroundTint="@color/blue_gray_light" /> 

我不喜欢以前的答案。 最好的解决scheme是使用:

 <android.support.v7.widget.AppCompatEditText app:backgroundTint="@color/blue_gray_light" /> 

android:backgroundTint EditText仅适用于API21 + 。 正因为如此,我们必须使用支持库和AppCompatEditText

注意:我们必须使用app:backgroundTint来代替android:backgroundTint。

您也可以通过调整EditText的背景来快速更改EditText的下划线颜色,如下所示:

 <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Something or Other" android:backgroundTint="@android:color/holo_green_light" /> 

要更改Edittext的下划线颜色:

如果你想要整个应用程序共享这种风格,那么你可以做到以下几点。

(1)转到styles.xml文件。 inheritanceTheme.AppCompat.Light.DarkActionBar(在我的情况下)父项的AppTheme将成为您的应用程序中所有样式文件的基础父项。 将其名称更改为“AppBaseTheme”。 创build另一个名称为AppTheme的文本,并从您刚编辑的AppBaseThemeinheritance。 它将如下所示:

 <!-- Base application theme. --> <style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="windowActionBar">false</item> <!--see http://www.google.com/design/spec/style/color.html#color-color-palette--> <item name="colorPrimary">@color/material_brown_500</item> <item name="colorPrimaryDark">@color/material_brown_700</item> <item name="colorAccent">@color/flamingo</item> <style name="AppTheme" parent="AppBaseTheme"> <!-- Customize your theme here. --> </style> 

然后将“colorAccent”更改为您想要的EditText线颜色的颜色。

(2)如果你有其他的值文件夹style.xml,这一步是非常重要的。 因为该文件将从您以前的父级xml文件inheritance。 例如,我有值-19 / styles.xml。 这是专门为Kitkat和以上。 更改其父为AppBaseTheme,并确保摆脱“colorAccent”,以便它不覆盖父项的颜色。 还需要保留特定于版本19的项目。然后,它将看起来像这样。

 <resources> <!-- Base application theme. --> <style name="AppTheme" parent="AppBaseTheme"> <item name="android:windowTranslucentStatus">true</item> </style> </resources> 

线的颜色由EditText的背景属性定义。 要改变它,你应该改变布局文件中的android:background

我应该注意到,这种风格是通过使用9补丁drawable实现的。 如果你看看SDK,你可以看到EditText的背景是​​这个图像:

textfield_activated_holo_light.9.png

要改变它,你可以在一个image processing程序中打开它,并以所需的颜色进行着色。 把它保存为bg_edit_text.9.png ,然后把它放在你可绘制的文件夹中。 现在,您可以将其应用为您的EditText的背景,如下所示:

 android:background="@drawable/bg_edit_text" 

我认为最好的办法是通过主题:

 <style name="MyEditTextTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="colorControlNormal">@color/black</item> <item name="colorControlActivated">@color/action_blue</item> <item name="colorControlHighlight">@color/action_blue</item> </style> <style name="addressbookitem_edit_style" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">wrap_content</item> <item name="android:textSize">13sp</item> <item name="android:theme">@style/MyEditTextTheme</item> <android.support.v7.widget.AppCompatEditText style="@style/addressbookitem_edit_style"/> 

小部件的背景是API级别相关的

替代scheme1

您可以通过提供一个自定义图像到您的EditText背景

 android:background="@drawable/custom_editText" 

你的形象应该看起来像这样。 它会给你想要的效果。

在这里输入图像说明

替代scheme2

将此xml设置为您的EditText背景属性。

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" android:padding="10dp"> <solid android:color="#4C000000"/> <corners android:bottomRightRadius="5dp" android:bottomLeftRadius="5dp" android:topLeftRadius="5dp" android:topRightRadius="5dp"/> </shape> 

这将在每个API上具有与您的EditText相同的外观和风格。

如果你想要一个平坦的线条,你可以很容易地用XML来做到这一点。 这里是xml示例:

 <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:top="-1dp" android:left="-1dp" android:right="-1dp" android:bottom="1dp" > <shape android:shape="rectangle"> <stroke android:width="1dp" android:color="#6A9A3A"/> </shape> </item> </layer-list> 

如果要为聚焦的edittext提供不同的宽度和颜色,请用select器replace形状。

以编程方式,您可以尝试:

 editText.getBackground().mutate().setColorFilter(getResources().getColor(android.R.color.holo_red_light), PorterDuff.Mode.SRC_ATOP); 

使用这个方法..并根据你的视图名称进行修改。 这段代码很好用。

  private boolean validateMobilenumber() { if (mobilenumber.getText().toString().trim().isEmpty() || mobilenumber.getText().toString().length() < 10) { input_layout_mobilenumber.setErrorEnabled(true); input_layout_mobilenumber.setError(getString(R.string.err_msg_mobilenumber)); // requestFocus(mobilenumber); return false; } else { input_layout_mobilenumber.setError(null); input_layout_mobilenumber.setErrorEnabled(false); mobilenumber.setBackground(mobilenumber.getBackground().getConstantState().newDrawable()); } 

为该edittext使用android:background属性。 将可绘制的文件夹图像传递给它。 例如,

 android:background="@drawable/abc.png" 
  <EditText android:id="@+id/et_password_tlay" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Password" android:textColorHint="#9e9e9e" android:backgroundTint="#000" android:singleLine="true" android:drawableTint="#FF4081" android:paddingTop="25dp" android:textColor="#000" android:paddingBottom="5dp" android:inputType="textPassword"/> <View android:id="@+id/UnderLine" android:layout_width="match_parent" android:layout_height="1dp" android:layout_below="@+id/et_password_tlay" android:layout_centerHorizontal="true" android:background="#03f94e" /> 

**它是一个观点**

尝试以下方法,它将转换EditText的底线颜色作为背景属性使用。

 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:left="@dimen/spacing_neg" android:right="@dimen/spacing_neg" android:top="@dimen/spacing_neg"> <shape> <solid android:color="@android:color/transparent" /> <stroke android:width="@dimen/spacing_1" android:color="@android:color/black" /> </shape> </item> </layer-list> 

你可以改变背景的颜色<EditText android:backgroundTint="@color/red"/>

最好的方法是使用AppCompatEditTextapp名称空间的backgroundTint属性。 即

  <android.support.v7.widget.AppCompatEditText android:layout_width="match_parent" app:backgroundTint="YOUR COLOR" android:layout_height="wrap_content" /> 

当我们使用android:backgroundTint它只能在API21或更多的工作,但app:backgroundTint可以在你的应用程序的所有API级别上工作。

你可以用编程的方式改变EditText的颜色: edittext.setBackgroundTintList(ColorStateList.valueOf(yourcolor));