¿Cómo especificar el espaciado entre elementos de LinearLayout sólo una vez?

Recientemente me encontré con un problema de nuevo que ya tuve varias veces en los últimos años.

LinearLayout es un layout manager muy conveniente. Pero lo que extraño es la posibilidad de añadir un cierto espacio entre los elementos (como el relleno) en una sola etiqueta XML.

Lo que quiero decir con una etiqueta es, que puedo definir en la declaración de LinearLayout el espaciamiento entre los elementos (por ejemplo, en un LinearLayout vertical el espacio vertical entre dos elementos en este diseño).

Sé que puedo hacerlo añadiendo la etiqueta XML android:layout_marginTop o algo similar a cada elemento en el LinearLayout.

Pero me gustaría poder definirlo en un solo punto, ya que el espaciado es el mismo para todos los elementos.

¿Alguien sabe una manera fácil de hacer esto (no implementar un LinearLayout personalizado o algo así)? Yo prefiero una solución que funciona directamente en XML sin necesidad de codificación.

La forma que se recomienda es aplicar un estilo a todos los elementos en el diseño lineal

 android:style="@style/mystyle" <style name="mystyle"> <item name="android:layout_marginTop">10dp</item> ... other things that your elements have in common </style> 

@ La respuesta de Chris-Tulip realmente me ayudó – con buena práctica también.

Para aquellos de ustedes que podrían estar recibiendo un error de Eclipse sobre la falta de un identificador de recurso para "Style" en el paquete android, como lo hice, no es necesario agregar el espacio de nombres android.

Por lo tanto, android: style = "xx" muestra el error, mientras que style = "xx" es correcto. Funky, pero para cualquiera que tenga ese error, esto podría ayudar.

Debe añadir android:layout_marginTop o android:layout_marginLeft al elemento que debe tener sangrado. Depende de android:orientation de su LinearLayout .

Usted podría definir su único artículo "prototipo" en un archivo xml separado y luego inflar los elementos de ese archivo, de forma dinámica en el código e insertarlos en su disposición lineal.

A continuación, definir el espaciado en el elemento real, no el LinearLayout padre, (como un android:layout_marginTop por ejemplo) y que el espaciado se aplicará a todos sus elementos a medida que los infla.

EDITAR:

Container.xml:

 <LinearLayout android:id="@+id/parent" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- Your items will be added here --> </LinearLayout> 

Item.xml:

 <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="4dp"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="This is my child" /> </LinearLayout> 

MyActivity.java:

 // Put this in a suitable place in your Java code, perhaps // in "onCreate" or "onResume" depending on where and how // you initialize your view. You can, of course inflate // any number of instances of the item and add them to // your parent LinearLayout. LayoutInflater inflater = LayoutInflater.from(context); View item = inflater.inflate(R.layout.item, null, false); LinearLayout container = findViewById(R.id.parent); container.addView(view); 

No he puesto un esfuerzo en probar el código, pero "debería" funcionar como está 🙂

Establecer transparente personalizado como un divisor para su diseño:

 <LinearLayout android:showDividers="middle" android:divider="@drawable/divider"> 

Nuevo recurso dibujable en la carpeta drawables (divider.xml):

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android = "http://schemas.android.com/apk/res/android"> <size android:width = "0dp" android:height = "16dp"/> </shape> 
  • Android EditarTexto Fondo transparente
  • Cómo guardar el lienzo de dibujo en android?
  • Fragmento no invoca onSaveInstanceState al pasar ViewPager?
  • ¿Acceso estático a los recursos de una aplicación para Android?
  • Widget personalizado utilizando LinearLayout no obtener onDraw ()
  • ¿Podemos limitar el número de caracteres en edittext de SearchView en Android?
  • Desplazamiento horizontal en la vista de cuadrícula de Android
  • Visualización de la imagen dibujable desde url en un ListView
  • Creación de un banner de aplicación inteligente para Android
  • Cambiar tamaño: Botón de radio de Android
  • ¿Por qué TextView en una línea elipsized con los cuadros de la demostración del "extremo"?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.