En la imagen a continuación, el cuadrado amarillo representa un RelativeLayout que está dentro de mi diseño general.¿Cuál es una forma razonable de hacer este diseño?
El "mensaje de estado" de la fila superior es un ViewFlipper que responde a los botones de palanca (A, B) que el usuario puede presionar. Los botones C, D y E hacen otras cosas que vuelven a cargar toda la vista. Nuestro cliente solicita que los botones A, B, C, D y E se organicen de la manera que se muestra a continuación. (La alineación vertical no es tan importante como la alineación horizontal.)
EDITAR para decir A, B, C, D y E son imágenes de una inmersión de 20x20; se alinean dentro de un ancho de aproximadamente 300dip. Quiero que los botones mantengan su relación de aspecto.
He creado una extensión de LinearLayout que se infla botones A y B (desde un archivo XML), y luego otro LinearLayout que se infla botones C, D, y E en otro archivo XML.
botones A y B (en realidad son ToggleButtons):
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:baselineAligned="true"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
>
<ToggleButton
android:id="@+id/A"
android:textOn=""
android:textOff=""
android:background="@layout/A"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="60dp"
android:layout_marginRight="30dp"
/>
<ToggleButton
android:id="@+id/B"
android:textOn=""
android:textOff=""
android:background="@layout/B"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
/>
</LinearLayout>
</RelativeLayout>
Botones C, D, E archivo xml:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:baselineAligned="true"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
>
<ImageView
android:id="@+id/C"
android:src="@drawable/C"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
/>
<ImageView
android:id="@+id/D"
android:src="@drawable/D"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
/>
<ImageView
android:id="@+id/E"
android:src="@drawable/E"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
/>
</LinearLayout>
</RelativeLayout>
Mi código funciona, básicamente, pero tengo que fudge con los márgenes para hacer que las cosas se alineen correctamente (lo cual no hacen todavía). Me pregunto si hay alguna manera más clara de alinear los conjuntos de botones "A B" y "C D E"
ps: el lector astuto notará que estoy ampliando LinearLayout, pero inflando RelativeLayouts. (No sé por qué incluso puede funcionar, pero) cuando intenté extender RelativeLayout, el diseño "C D E" ni siquiera apareció en mi dispositivo. No sé a dónde fue.
Y si quiere OP para los botones se expandan, entonces él tiene que reemplazar LinearLayout con RelativeLayout y combinar layout_left/layout_right con márgenes y así sucesivamente. – Audrius
No quiero que los botones se expandan. Quiero que mantengan sus tamaños relativos, "flotando" dentro del espacio más grande que les dan. –