如何更改EditText中的线条颜色
我在我的布局xml文件中创build一个EditText
但是我想在EditText中把Holo的颜色改成(例如)红色。 如何做到这一点?
这是您可以用于所有视图的最佳工具,并且免费得到@ JérômeVan Der Linden 。
Android Holo颜色生成器允许您轻松地为您的Android应用程序创buildAndroid组件,例如EdiText
或微调器以及自己的颜色。 它将生成所有必需的九个修补程序资产以及相关的XML可绘制和样式,您可以直接复制到您的项目中。
尝试一下
这个图像放在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
的背景是这个图像:
要改变它,你可以在一个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"/>
最好的方法是使用AppCompatEditText
和app
名称空间的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));