2010-02-21 11 views
6

Sto cercando di ottenere fila ListView a guardare come la seguente:ListView fila styling - testo allineato a sinistra, e l'icona allineato a destra

| Text-Text-Text      <ImageButton> | 

Con l'ImageButton scattò verso il bordo destro. Come posso fare questo? Ecco il codice di layout corrente che sto usando. Che cosa sto facendo di sbagliato?

<?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> 

Il mio codice attualmente produce questo: grrr

risposta

16

Passo # 1: utilizzare una base RelativeLayout.

Passo # 2: Metti il ​​tuo ImageButton come avere android:layout_alignParentRight="true"

Passo # 3: Metti il ​​tuo TextView ha avere android:layout_alignParentLeft="true", android:layout_toLeftOf="..." (dove ... è l'ID del vostro ImageButton), e forse qualche altro valore RelativeLayout.LayoutParams per l'allineamento verticale

+0

+1. RelativeLayout è probabilmente il più appropriato. –

+0

Proverà questo in un secondo. – GuyNoir

+0

Ehi! Ha funzionato! Grazie mille. Non ho mai usato RelativeLayout in precedenza, quindi non pensavo di usarli. – GuyNoir

2

Il seguente frammento di codice fornisce un esempio di come creare una riga di ListView che ha del testo (allineato a sinistra orizzontalmente, tramite android:layout_alignParentLeft="true") e un'icona (allineata orizzontalmente a destra tramite android:layout_alignParentRight="true") e tutto in verticale c entred (android:layout_centerVertical="true").

Rende come segue (YMMV, a seconda stili globali):

Rendering of code example

C'è anche una nuova icona commentato-out che può essere posizionato alla sinistra del più a destra l'icona; rimuovere i tag di commento XML da abilitare.

Ecco l'XML di layout:

<?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>