Answers:
这是您可以用于所有视图的最佳工具,而@ JérômeVan Der Linden可以免费使用。
Android Holo Colors Generator允许您EditText
使用自己的颜色为Android应用程序轻松创建Android组件,例如或Spinner。它将生成所有必要的九个补丁资产以及相关的XML可绘制对象和样式,您可以将其直接复制到项目中。
更新1
该域似乎已过期,但是该项目是一个开放源代码,您可以在这里找到
试试吧
此图像放在背景中 EditText
android:background="@drawable/textfield_activated"
更新2
对于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" />
Update 3
现在我们有了后援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" />
我不喜欢以前的答案。最好的解决方案是使用:
<android.support.v7.widget.AppCompatEditText
app:backgroundTint="@color/blue_gray_light" />
android:backgroundTint
对于EditText
只在作品API21 +。因此,我们必须使用支持库和AppCompatEditText
。
注意:我们必须使用app:backgroundTint
代替android:backgroundTint
AndroidX版本
<androidx.appcompat.widget.AppCompatEditText
app:backgroundTint="@color/blue_gray_light" />
您还可以通过像这样设置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" />
对于21 以下的API,您可以在EditText
下面的代码中使用主题属性放入样式文件中
<style name="MyEditTextTheme">
<item name="colorControlNormal">#FFFFFF</item>
<item name="colorControlActivated">#FFFFFF</item>
<item name="colorControlHighlight">#FFFFFF</item>
</style>
使用这种风格EditText
的
<EditText
android:id="@+id/etPassword"
android:layout_width="match_parent"
android:layout_height="@dimen/user_input_field_height"
android:layout_marginTop="40dp"
android:hint="@string/password_hint"
android:theme="@style/MyEditTextTheme"
android:singleLine="true" />
您可以通过编程方式尝试:
editText.getBackground().mutate().setColorFilter(getResources().getColor(android.R.color.holo_red_light), PorterDuff.Mode.SRC_ATOP);
我认为最好的方法是按主题:
<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="AddressBookStyle" 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>
</style>
<android.support.v7.widget.AppCompatEditText
style="@style/AddressBookStyle"/>
更改Edittext的下划线颜色:
如果您希望整个应用程序共享此样式,则可以执行以下方法。
(1)转到styles.xml文件。继承Theme.AppCompat.Light.DarkActionBar(在我的情况下)的父级的AppTheme将成为它们在您的应用程序中所有样式文件的基础父级。将其名称更改为“ AppBaseTheme”。在其下进行另一个名为AppTheme的样式,该样式继承自刚编辑的AppBaseTheme。它将如下所示:
<!-- 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的value文件夹,则此步骤非常重要。因为该文件将继承您先前的父xml文件。例如,我有值-19 / styles.xml。这是专门为Kitkat和更高版本而设计的。将其父项更改为AppBaseTheme,并确保摆脱“ colorAccent”,以免覆盖父项的颜色。另外,您还需要保留特定于版本19的项目。然后它将看起来像这样。
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowTranslucentStatus">true</item>
</style>
</resources>
非常简单(必需:最低API 21)...
保持编码........ :)
线条的颜色由EditText
的background属性定义。要更改它,您应该更改android:background
布局文件中的。
我应该注意,这种样式是通过使用9色可绘制对象实现的。如果您在SDK中查看,则可以看到的背景EditText
是此图片:
要对其进行更改,您可以在图像处理程序中将其打开并以所需的颜色进行着色。将其另存为bg_edit_text.9.png
,然后将其放入可绘制文件夹中。现在,您可以将其用作背景,EditText
例如:
android:background="@drawable/bg_edit_text"
您可以使用以下代码以编程方式更改EditText的颜色:edittext.setBackgroundTintList(ColorStateList.valueOf(yourcolor));
小部件的背景取决于API级别。
替代方案1
您可以通过以下方式为EditText
背景提供自定义图片:
android:background="@drawable/custom_editText"
您的图像应如下所示。它会给您想要的效果。
替代方案2
将此xml设置为您的EditText
background属性。
<?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>
EditText
每个API 都会具有与您相同的外观。
您可以通过为背景着色来更改颜色
<EditText
android:backgroundTint="@color/red"/>
drawable / bg_edittext.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent" />
</shape>
</item>
<item
android:left="-2dp"
android:right="-2dp"
android:top="-2dp">
<shape>
<solid android:color="@android:color/transparent" />
<stroke
android:width="1dp"
android:color="@color/colorDivider" />
</shape>
</item>
</layer-list>
设置为EditText
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_edittext"/>
使用此方法..并根据您的视图名称进行修改。这段代码很棒。
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());
}
如果您想要一条平线,则可以使用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>
如果要为焦点编辑文本提供不同的宽度和颜色,请用选择器替换形状。
最好的方法是使用命名空间的AppCompatEditText
with backgroundTint
属性app
。即
<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
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>