No se puede obtener el diseño adecuado con "fill_parent"
Estoy tratando de crear este diseño sencillo en Android.
- Coloque ImageView sobre el botón android
- Android: dibujo mapa de bits en ubicación específica, negativa a dibujar
- Cómo crear Android ActionBar con vista personalizada y pestañas
- Cómo inflar varias instancias de un diseño con el mismo id dentro de un diseño inflado
- Gestión de diseños de Android, debe haber una mejor manera
A debe ajustarse a su contenido y left|center_vertical
align.
B debe expandirse tanto como sea posible, llenando todo el espacio vacío.
C debe ser alineado a la derecha, envoltura para llenar su contenido y también estar alineado center_vertical
.
Aquí está mi diseño:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:gravity="left|center_vertical"> <!-- A --> <ImageView android:id="@+id/example_item_icon" android:layout_width="48px" android:layout_height="48px"/> <!-- B --> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="fill_parent" android:gravity="left|center_vertical" android:padding="5px"> <TextView android:id="@+id/example_item_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="bold"/> <TextView android:id="@+id/example_item_level_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="bold|italic" android:lines="1" android:textSize="10px"/> </LinearLayout> <!-- C --> <TextView android:id="@+id/example_item_count_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="bold" android:textSize="14px"/> </LinearLayout>
En esta disposición, C se empuja fuera de la pantalla. ¿Cómo puedo hacer que este diseño funcione?
- Android: nextFocusForward se ignora en el diseño
- Android: establecer la altura mínima de una vista mediante programación
- Forzar adjustPan en la actividad que contiene ScrollView
- Android: Centrar una imagen
- Cómo agregar texto a la imagen y guardar como nueva imagen
- GridLayout heterogéneo
- ImageView una dimensión para caber espacio libre y segundo evaluar para mantener la ración de aspecto
- Diseño inferior en un cajón de navegación Android
Fill_parent significa "ser tan grande como el padre", no "usar el espacio vacío restante". En lugar de fill_parent, solo usa android: layout_width = "0dip" y android: layout_weight = "1".
El truco, utilice un diseño relativo … aquí está un ejemplo (fuera de la parte superior de mí la cabeza – no marcado y faltan campos de altura y vertical alinear los ajustes para que sea fácil ver las cosas importantes).
<relativelayout android:width="fillParent"> <textview android:id="@+id/left" android:text="left" android:width="wrap_content" android:layout_alignParentleft="true" /> <textview android:id="@+id/right" android:text="right" android:width="wrap_content" android:layout_alignParentright="true" /> <textview android:id="@+id/middle" android:text="middle" android:width="wrap_content" android:layout_alignleft="@id/right" android:layout_alignright="@id/left" /> </relativelayout>
Editar: aquí está con los errores tipográficos limpios (y se prueba como trabajando)
<RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/left" android:text="left" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" /> <TextView android:id="@+id/right" android:text="right" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" /> <TextView android:id="@+id/middle" android:text="middle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toLeftOf="@id/right" android:layout_toRightOf="@id/left" /> </RelativeLayout>
Prueba esto. He reemplazado ImageViews
con TextViews
para que aparezcan en el editor XML más fácil. Tenga en cuenta que he mantenido el ancho de 48px en "A", que no es algo que creo que realmente quieres tener. Sustitúyalo por wrap_content.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:gravity="center_vertical"> <!-- A --> <TextView android:layout_height="48px" android:id="@+id/example_item_count_text2" android:textSize="14px" android:layout_weight="1" android:text="this is item a" android:textStyle="bold" android:layout_width="48px"> </TextView> <!-- B --> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="fill_parent" android:gravity="center_vertical" android:layout_weight="1" android:padding="5px"> <TextView android:id="@+id/example_item_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="this is B" android:textStyle="bold"/> <TextView android:id="@+id/example_item_level_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="this should be underneath B" > </LinearLayout> <!-- C --> <TextView android:id="@+id/example_item_count_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="this is item c" android:layout_weight="1" android:textStyle="bold" android:textSize="14px"/> </LinearLayout>
Aquí está mi respuesta. Acabo de establecer el layout_weight
en B para ser 1
. Evidentemente, layout_weight
es algo así como un enfoque basado en porcentajes. No sé cómo funciona, pero aquí está mi producto terminado, luciendo genial:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:gravity="left|center_vertical"> <ImageView android:id="@+id/example_item_icon" android:layout_width="48px" android:layout_height="48px"/> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="fill_parent" android:gravity="left|center_vertical" android:layout_weight="1" android:padding="5px"> <TextView android:id="@+id/example_item_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="bold"/> <TextView android:id="@+id/example_item_level_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="bold|italic" android:lines="1" android:textSize="10px"/> </LinearLayout> <TextView android:id="@+id/example_item_count_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="bold" android:textSize="14px"/> </LinearLayout>
- Salir de la aplicación cuando presione el botón Atrás en actividad con múltiples fragmentos en el Gaveta de navegación
- Unidad de prueba de la aplicación android con retrofit y rxjava