¿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.
- Android: Dibujo de un botón como spinner
- Cómo actualizar un widget con precisión cada minuto
- ¿Cómo crear un diálogo de alerta con un título de varias líneas?
- Diálogo de progreso personalizado Android
- ¿Cómo mostrar el diálogo en el método onCreate?
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.
- Edición de estilo de Android ListView con fondo mientras se desplaza
- Mantener el estado abierto / cerrado del teclado para EditText cuando la aplicación llega al primer plano
- Android Fragment, No se encontró ninguna vista para id dentro de TabHost
- Creación de un filtro de texto (como búsqueda rápida) para un Spinner en Android
- Centrar verticalmente el texto de TextView en relación con su imagen drawableLeft
- ¿Cómo ocultar el botón de cierre en la vista de búsqueda de forma predeterminada?
- Poner cualquier vista sobre un VideoView en Android
- El texto de la marquesina no funciona en el widget
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>
- Firebase Push Notification – Cómo mostrar mensaje multilínea en Notificación
- Cambiar las versiones de prueba y pro con las aplicaciones de Android en Eclipse: ¿cómo hacerlo menos doloroso?