ListView fila estilo - dejó texto alineado, y el icono de la derecha-alineado
-
22-09-2019 - |
Pregunta
Estoy intentando conseguir fila ListView a tener el siguiente aspecto:
| Text-Text-Text <ImageButton> |
Con la ImageButton roto para el borde derecho. ¿Cómo puedo hacer esto? Aquí está el código de diseño actual que estoy usando. ¿Qué estoy haciendo mal?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layercontainer"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#699">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="left">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="YO HOW SI IT GOESSDA" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="right">
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/trash" />
</LinearLayout>
</LinearLayout>
Mi código actualmente produce esto:
Solución
Paso # 1:. Usa una base RelativeLayout
Paso # 2: Ponga su ImageButton
como tener android:layout_alignParentRight="true"
Paso # 3: Pon tu TextView
ha tener android:layout_alignParentLeft="true"
, android:layout_toLeftOf="..."
(donde ...
es el ID de su ImageButton
), y quizás algún otro valor RelativeLayout.LayoutParams
para la alineación vertical
Otros consejos
El siguiente fragmento de código proporciona un ejemplo de cómo crear una fila ListView que tiene algo de texto (horizontalmente alineado a la izquierda, a través de android:layout_alignParentLeft="true"
), y un icono (horizontalmente alineado a la derecha a través de android:layout_alignParentRight="true"
), y todo centrado verticalmente (android:layout_centerVertical="true"
) .
Se hace de la siguiente manera (tu caso es distinto, dependiendo de estilos globales):
También hay un icono adicional comentado de salida que puede ser colocado a la izquierda del icono más a la derecha; suprima las etiquetas XML para habilitar.
Aquí está el diseño XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:descendantFocusability="blocksDescendants"
android:padding="6dp">
<!-- Note: android:descendantFocusability="blocksDescendants" set to ensure that
OnItemClickListener works by ensuring constituent controls do not take focus -->
<TextView
android:id="@+id/lbl_list_item_row_text"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:lines="1"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:text="My List Item Text"
/>
<!-- This can be uncommented to add another button
<ImageButton
android:id="@+id/btn_additional_icon"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/icon_additional_icon"
android:layout_centerVertical="true"
android:layout_width="wrap_content"
android:padding="3dp"
android:background="@null"
android:src="@drawable/icon_additional_icon" />
-->
<ImageButton
android:id="@+id/icon_additional_icon"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:background="@null"
android:padding="3dp"
android:src="@drawable/icon_right_aligned_icon" />
</RelativeLayout>