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); ... 
  • Cómo hacer aplicaciones hermosas y con estilo como Timely
  • Android: Conjunto de cuentas Juego de luz
  • AS editor de temas no se muestra la vista previa
  • Android superior Copiar / Pegar barra de herramientas
  • ¿El panel de vista previa del estudio de Android no representa ActionBar?
  • Actividad translúcida llenando toda la pantalla
  • EditText cómo activar copia / pegar popup sin barra de acción?
  • Android conjunto editar estilo de texto globalmente en el tema no funciona
  • Cambio de tema de aplicación a nivel de programación?
  • Appcompat_v7: Error al recuperar el padre del elemento: No se encontró ningún recurso que coincida con el nombre dado
  • ¿Por qué y cuándo tenemos que añadir android: prefijo al estilo?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.