Establecer un tema coherente para todos los editTexts en Android

He terminado de hacer mi aplicación. Ahora, quiero restablecer todos mis editTexts para tener el ancho de diseño como relleno padre en lugar de contenido de ajuste.

android:layout_width="fill_parent" 

mientras que actualmente todos mis editTexts son

 android:layout_width="wrap_content" 

¿Hay alguna manera que puedo hacer esto en un archivo de estilo xml, en lugar de individualmente en cada diseño? Actualmente tengo esto como mi styles.xml

 <style name="AppTheme" parent="android:Theme.Light"> <item name="android:fontFamily">Verdana</item> <item name="android:editTextStyle">@style/EditTextStyle</item> </style> <style name="EditTextStyle" parent="@android:style/Widget.EditText"> <item name="android:layout_width">fill_parent</item> <item name="android:textColor">#808080</item> </style> 

Pero estoy recibiendo una excepción diciendo que layout_width debe especificarse. Ésta es mi excepción:

 07-15 11:13:34.872: E/AndroidRuntime(1195): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.passwordkeeper.ui/com.passwordkeeper.ui.ActivityLogin}: java.lang.RuntimeException: Binary XML file line #29: You must supply a layout_width attribute. 

Cualquier salida fácil o tengo que cambiar el atributo en todos mis editText de forma individual?

Puedes probar este. Esta es la parte del archivo de manifiesto que necesita cambiar para llamar a su tema personalizado (el tema personalizado llamado aquí es AppTheme:

 <application android:name="YourApplication" android:theme="@style/AppTheme" > 

A continuación, en su archivo styles.xml, cree y personalice este tema personalizado:

 <style name="AppTheme" parent="@android:style/Theme.Holo.Light"> <item name="android:typeface">YourTypeFace</item> </style> 

Puede agregar los parámetros que necesita dentro del estilo. Esto aplicará el estilo a todas sus vistas de texto.

Una solución a su problema es aplicar un tema personalizado a todas sus actividades. Para ello, puede heredar propiedades de un tema existente y anular las propiedades que desea cambiar.

  1. En AndroidManifest.xml, busque el elemento <application>.
  2. Añada el atributo a él:

android: theme = "@ estilo /"

  1. Busque el archivo styles.xml en la carpeta de valores.
  2. Utilice la siguiente plantilla:
 <style name="ApplicationStyle" parent="android:Theme.Light"> <item name="@android:editTextStyle">@style/customEditText</item>" </style> 

Los nombres utilizados en el anterior son sólo ejemplos, usted puede usar el suyo propio. En cuanto al tema padre, que también depende de usted.

Todo lo que queda es la definición de editTextStyle (o cualquier nombre que haya elegido para el estilo). Debe heredar propiedades de Widget.EditText y reemplazar las propiedades que desea cambiar, como las siguientes:

 <style name="customEditText" parent="@android:style/Widget.EditText"> <item name="android:textColor" >#ffffff</item> </style> 

Para citar la guía androide oficial:

El atributo padre en el elemento es opcional y especifica el ID de recurso de otro estilo del que este estilo debe heredar propiedades. A continuación, puede anular las propiedades de estilo heredadas si lo desea.

Traté de hacer que sea fácil de entender y seguir. Soy un junior dev tan mientras que la solución antedicha trabaja para mí, puede no ser el mejor hacia fuera allí. Como he dicho, sin embargo, resuelve el problema de manera más eficiente.

Estaba teniendo este problema exacto. Por alguna razón me ayudó a abandonar el android: parte de la definición de AppTheme , y dejarlo sólo como editTextStyle (como se menciona en esta respuesta ):

 <style name="AppTheme" parent="android:Theme.Light"> <item name="android:fontFamily">Verdana</item> <item name="editTextStyle">@style/EditTextStyle</item> </style> 

Desafortunadamente, no es posible establecer los atributos de diseño (layout_ *) de un tema (consulte la documentación Parámetros de diseño y esta respuesta de un ingeniero de framework de Android ). Debe establecerlos en cada elemento o establecer los atributos de diseño en un estilo y dejar que cada elemento haga referencia al estilo como este:

 <Button style="@style/ButtonBig" android:text="my text" /> 

donde ButtonBig se define así:

 <style name="ButtonBig" parent="android:Widget.Holo.Light.Button"> <item name="android:textSize">20sp</item> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">100dp</item> </style> 

Tendrás que establecer la propiedad style="@styles/EditTextStyle" en todos tus componentes de EditText en tu aplicación.

defina el atributo de estilo para todo EditText como a continuación:

  <EditText android:id="@+id/editText1" android:layout_height="wrap_content" style="@style/EditTextStyle"> 

layout_width especificar layout_width individualmente en cada vista. No hay manera de escapar. Puede crear un objeto LayoutParams y establecer su anchura y altura en él y establecer en él cada EditText como

 textView1.setLayoutParams(lParams); textView2.setLayoutParams(lParams); ... 
  • No se puede establecer colorControlNormal y android: textColor en estilo
  • ActionBarSherlock no admite cuadros de diálogo de alerta de luz-tema?
  • Establecer tema para un fragmento
  • Android: ¿cómo usar los colores del tema actual en un xml extraíble?
  • ¿Cómo cambio el color del ProgressDialog?
  • Tema de un selector dibujable en pre-Lollipop
  • Tema XML de Android que hereda de dos temas principales?
  • Android cómo obtener AppCompat.Translucent tipo de tema con barra de acción de apoyo?
  • Eliminación de espacio en blanco junto al logotipo de la aplicación (ActionBar Sherlock)
  • El estilo de Android Holo Light cambia dependiendo del contexto elegido
  • Cambiar el teclado Android L introduzca el color de la tecla
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.