2010-02-21 22 views
6

estoy tratando de conseguir fila ListView para parecerse a lo siguiente:ListView fila estilo - texto alineado a la izquierda, y el icono alineado a la derecha

| Text-Text-Text      <ImageButton> | 

Con la ImageButton ajusta al 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: grrr

Respuesta

16

Paso # 1: Utilice una base RelativeLayout.

Paso # 2: Ponga su ImageButton como teniendo android:layout_alignParentRight="true"

Paso # 3: Ponga su TextView tiene que tiene 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

+0

+1. RelativeLayout es probablemente el más apropiado. –

+0

Lo intentaré en un segundo. – GuyNoir

+0

¡Oye! ¡Funcionó! Gracias un montón. Nunca antes había usado RelativeLayout, así que no pensé en usarlos. – GuyNoir

2

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 derecho alineados a través de android:layout_alignParentRight="true"), y todo verticalmente c entred (android:layout_centerVertical="true").

Se hace de la siguiente manera (tu caso es distinto, dependiendo de estilos globales):

Rendering of code example

También hay un icono adicional comentado de salida que puede ser colocado a la izquierda de más a la derecha del icono; eliminar las etiquetas de comentario XML para habilitar.

Aquí es 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> 
Cuestiones relacionadas