Respuestas:
Esta es la mejor herramienta que puede utilizar para todas las vistas y es GRATUITA muchas gracias a @ Jérôme Van Der Linden .
Android Holo Colors Generator le permite crear fácilmente componentes de Android, como EditText
spinner, con sus propios colores para su aplicación de Android. Generará todos los nueve activos de parches necesarios, además de los estilos y el dibujo XML asociado que puede copiar directamente en su proyecto.
ACTUALIZACIÓN 1
Este dominio parece expirado pero el proyecto es de código abierto que puedes encontrar aquí
intentalo
esta imagen puesta en el fondo de EditText
android:background="@drawable/textfield_activated"
ACTUALIZACIÓN 2
Para API 21 o superior, puede usar 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" />
Actualización 3
Ahora tenemos con respaldoAppCompatEditText
Nota: Necesitamos usar app: backgroundTint en lugar de 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" />
No me gustan las respuestas anteriores. La mejor solución es usar:
<android.support.v7.widget.AppCompatEditText
app:backgroundTint="@color/blue_gray_light" />
android:backgroundTint
para EditText
trabajos solo en API21 + . Por eso, tenemos que usar la biblioteca de soporte y AppCompatEditText
.
Nota: tenemos que usar en app:backgroundTint
lugar deandroid:backgroundTint
Versión de AndroidX
<androidx.appcompat.widget.AppCompatEditText
app:backgroundTint="@color/blue_gray_light" />
También puede cambiar rápidamente el color de subrayado del EditText al teñir el fondo del EditText de la siguiente manera:
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Something or Other"
android:backgroundTint="@android:color/holo_green_light" />
para API por debajo de 21, puede usar el atributo de tema en el EditText
código debajo del archivo de estilo
<style name="MyEditTextTheme">
<item name="colorControlNormal">#FFFFFF</item>
<item name="colorControlActivated">#FFFFFF</item>
<item name="colorControlHighlight">#FFFFFF</item>
</style>
usa este estilo EditText
como
<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" />
Programáticamente, puedes probar:
editText.getBackground().mutate().setColorFilter(getResources().getColor(android.R.color.holo_red_light), PorterDuff.Mode.SRC_ATOP);
Creo que la mejor manera es por tema:
<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"/>
Para cambiar el color de subrayado de Edittext:
Si desea que toda la aplicación comparta este estilo, puede hacer lo siguiente.
(1) vaya al archivo styles.xml. Su AppTheme que hereda el padre de Theme.AppCompat.Light.DarkActionBar (en mi caso) será el padre base de todos los archivos de estilo en su aplicación. Cambie el nombre a "AppBaseTheme". Haga otro estilo justo debajo que tenga el nombre de AppTheme y herede de AppBaseTheme que acaba de editar. Se verá así:
<!-- 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>
Luego cambie el "colorAccent" a cualquier color que desee que sea el color de la línea EditText.
(2) Si tiene otras carpetas de valores con style.xml, este paso es muy importante. Porque ese archivo heredará de su archivo xml primario anterior. Por ejemplo, tengo valores-19 / styles.xml. Esto es específicamente para Kitkat y superior. Cambie su padre a AppBaseTheme y asegúrese de deshacerse de "colorAccent" para que no anule el color del padre. También debe mantener los elementos que son específicos de la versión 19. Entonces se verá así.
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowTranslucentStatus">true</item>
</style>
</resources>
Es bastante simple (Requerido: API 21 mínimo) ...
Keep Coding ........ :)
El color de la línea está definido por EditText
la propiedad de fondo de. Para cambiarlo debes cambiar elandroid:background
archivo de diseño.
Debo señalar que este estilo se logra mediante el uso de un dibujo de 9 parches. Si mira en el SDK, puede ver que el fondo de la EditText
imagen es esta:
Para cambiarlo, puede abrirlo en un programa de manipulación de imágenes y colorearlo con el color deseado. Guárdelo como bg_edit_text.9.png
y luego póngalo en su carpeta dibujable. Ahora puede aplicarlo como fondo para su EditText
gusto, así:
android:background="@drawable/bg_edit_text"
Puede cambiar el color de EditText mediante programación simplemente usando esta línea de código:edittext.setBackgroundTintList(ColorStateList.valueOf(yourcolor));
El fondo de los widgets depende del nivel de API .
ALTERNATIVA 1
Puede proporcionar una imagen personalizada a su EditText
fondo por
android:background="@drawable/custom_editText"
Tu imagen debería verse así. Te dará el efecto deseado.
ALTERNATIVA 2
Establezca este xml en su EditText
atributo de fondo.
<?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>
Esto tendrá el mismo aspecto de EditText
cada API.
Puedes cambiar el color al teñir el fondo
<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>
Establecer en EditText
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_edittext"/>
Use este método ... y modifíquelo de acuerdo con sus nombres de vista. Este código funciona muy bien.
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());
}
Si desea una línea plana, puede hacerlo fácilmente con xml. Aquí está el ejemplo 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>
Reemplace la forma con un selector si desea proporcionar un ancho y un color diferentes para el texto de edición enfocado.
El mejor enfoque es usar un atributo AppCompatEditText
con backgroundTint
del app
espacio de nombres. es decir
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
app:backgroundTint="YOUR COLOR"
android:layout_height="wrap_content" />
cuando lo usamos android:backgroundTint
solo funcionará en API21 o más, pero app:backgroundTint
funciona en todos los niveles de API que su aplicación lo hace.
<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" />
** es uno de hacer con vista **
Pruebe de la siguiente manera, convertirá el color de la línea de fondo de EditText, cuando se use como propiedad de fondo.
<?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>