Cómo cambiar el color de la línea en EditText
Estoy creando un EditText en mi archivo xml de diseño
Pero quiero cambiar la línea de color en EditText de Holo a (por ejemplo) rojo. ¿Cómo se puede hacer eso?
- Android analiza un xml con saxparser
- Android: state_enabled falta / no funciona?
- Android: Caja blanca no deseada en la parte superior de la pantalla (barra de herramientas?)
- Cómo configurar el fondo del botón seleccionado / no seleccionado en el archivo XML
- No se encontró ningún recurso en el archivo XML de diseño android
- android cómo establecer el icono de la casilla de verificación en el derecho?
- Ignorar elementos no está permitido aquí, en Android lint.xml
- ¿Es posible acceder a un elemento de string-array en Android?
- Referencia a una cadena en un recurso de matriz de cadena con xml
- El botón no está llamando a OnClickListener con el primer clic
- Crashing debido a "No identificador de paquete al obtener el valor del número de recurso ..."
- Obligar a un botón a permanecer en la parte inferior de la pantalla del teléfono
- Analizar XML desde un sitio web a un dispositivo Android
Esta es la mejor herramienta que puedes usar para todas las vistas y sus muchas gracias a @ Jérôme Van Der Linden .
El generador de colores Android Holo le permite crear fácilmente componentes Android como EdiText
o spinner con sus propios colores para su aplicación de Android. Generará todos los nueve elementos de parche necesarios, además de los estilos XML dibujables y los estilos que puede copiar directamente en su proyecto.
intentalo
Esta imagen puesta en el fondo de EditText
android:background="@drawable/textfield_activated"
ACTUALIZAR
Para API 21 o superior, puede utilizar 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" />
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 sólo funciona en API21 + . Debido a ello, tenemos que utilizar la biblioteca de soporte y AppCompatEditText .
Nota: tenemos que usar app: backgroundTint en lugar de android: backgroundTint.
También puede cambiar rápidamente el color de subrayado de EditText teñiendo el fondo del EditText así:
<EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Something or Other" android:backgroundTint="@android:color/holo_green_light" />
Para cambiar el color de subrayado de Edittext:
Si quieres que toda la aplicación comparta este estilo, puedes hacerlo de la siguiente manera.
(1) vaya al archivo styles.xml. Tu AppTheme que hereda al padre de Theme.AppCompat.Light.DarkActionBar (en mi caso) será el padre base de todos los archivos de estilo en tu aplicación. Cambiar el nombre de la misma a "AppBaseTheme". Hacer otro estilo justo debajo de él que tiene el nombre de AppTheme y hereda de AppBaseTheme que acaba de editar. Se verá como sigue:
<!-- 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>
A continuación, cambie el "colorAccent" a cualquier color que desee que el color de la línea EditText sea.
(2) Si tiene otras carpetas de valores con style.xml, este paso es muy importante. Debido a que el archivo heredará de su archivo xml padre anterior. Por ejemplo, tengo valores-19 / styles.xml. Esto es específicamente para Kitkat y superior. Cambie a su padre a AppBaseTheme y asegúrese de deshacerse de "colorAccent" para que no anule el color del padre. También es necesario 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>
El color de la línea se define mediante la propiedad de fondo de EditText
. Para cambiarlo, debe cambiar el android:background
en el archivo de diseño.
Debo señalar que este estilo se logra mediante el uso de un 9-parche dibujable. Si miras en el SDK, puedes ver que el fondo del EditText
es esta imagen:
Para cambiarlo, puede abrirlo en un programa de manipulación de imágenes y colorearlo en el color deseado. bg_edit_text.9.png
como bg_edit_text.9.png
y luego póngalo en su carpeta dibujable. Ahora puedes aplicarlo como fondo para tu EditText
así:
android:background="@drawable/bg_edit_text"
El fondo de los widgets depende del nivel del API .
ALTERNATIVA 1
Puede proporcionar una imagen personalizada a su fondo de EditText
android:background="@drawable/custom_editText"
Su imagen debe ser algo como esto. Le dará el efecto deseado.
ALTERNATIVA 2
Establecer este xml a su EditText
fondo 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>
Esto tendrá la misma apariencia de su EditText
en cada API.
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 diferentes anchos y colores para edittext enfocado.
Utilice este método .. y modifíquelo según 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()); }
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="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"/>
Usar android: propiedad de fondo para ese edittext. Pase su imagen de carpeta dibujable a ella. Por ejemplo,
android:background="@drawable/abc.png"
El mejor enfoque es usar un AppCompatEditText
con el atributo backgroundTint
del espacio de nombres de la app
. es decir
<android.support.v7.widget.AppCompatEditText android:layout_width="match_parent" app:backgroundTint="YOUR COLOR" android:layout_height="wrap_content" />
Cuando usamos android:backgroundTint
sólo funcionará en API21 o más, pero la app:backgroundTint
funciona en todos los niveles de API de su aplicación.
<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, se convertirá el color de línea inferior de EditText, cuando se utiliza como una 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>
Programáticamente, puede probar:
editText.getBackground().mutate().setColorFilter(getResources().getColor(android.R.color.holo_red_light), PorterDuff.Mode.SRC_ATOP);
- Cómo configurar las opciones de Internet para el emulador de Android?
- NoClassDefFoundError en la biblioteca Google Play Services V2