2012-12-22 12 views
11

Sto utilizzando il layout tabella per visualizzare i dati come mostrato di seguito. enter image description hereAllineamento layout tabella Android

Cosa voglio fare?

Desidero che il testo nella seconda colonna sia allineato a sinistra e che il testo debba essere avvolto e visualizzato nella riga successiva e sul flusso superiore come si vede nell'immagine.

Codice:

<TableLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/tableLayout1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 

     <TableRow 
      android:id="@+id/tableRow2" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:paddingBottom="10dp" > 

      <ImageView 
       android:id="@+id/place_category_icon" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_centerVertical="true" 
       android:contentDescription="ss" 
       android:paddingRight="10dp" 
       android:src="@drawable/icon_category" 
       android:textAlignment="textStart" /> 

      <TextView 
       android:id="@+id/textView2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_centerVertical="true" 
       android:layout_gravity="center" 
       android:text="230 kms" 
       android:textSize="16sp" > 
      </TextView> 
     </TableRow> 

     <TableRow 
      android:id="@+id/tableRow2" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:paddingBottom="10dp" > 

      <ImageView 
       android:id="@+id/place_category_icon" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_centerVertical="true" 
       android:contentDescription="ss" 
       android:paddingRight="10dp" 
       android:src="@drawable/icon_category" 
       android:textAlignment="textStart" /> 

      <TextView 
       android:id="@+id/textView2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_centerVertical="true" 
       android:layout_gravity="center" 
       android:text="Hill Station, Wild Life" 
       android:textSize="16sp" > 
      </TextView> 
     </TableRow> 

     <TableRow 
      android:id="@+id/tableRow2" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:paddingBottom="10dp" > 

      <ImageView 
       android:id="@+id/place_category_icon" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_centerVertical="true" 
       android:contentDescription="ss" 
       android:paddingRight="10dp" 
       android:src="@drawable/icon_category" 
       android:textAlignment="textStart" /> 

      <TextView 
       android:id="@+id/textView2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_centerVertical="true" 
       android:layout_gravity="center" 
       android:text="Summer 23-40°C, Winter 10-32°C" 
       android:textSize="16sp" > 
      </TextView> 
     </TableRow> 

     <TableRow 
      android:id="@+id/tableRow2" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:paddingBottom="10dp" > 

      <ImageView 
       android:id="@+id/place_category_icon" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_centerVertical="true" 
       android:contentDescription="ss" 
       android:paddingRight="10dp" 
       android:src="@drawable/icon_category" 
       android:textAlignment="textStart" /> 

      <TextView 
       android:id="@+id/textView2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_centerVertical="true" 
       android:layout_gravity="center" 
       android:text="Tippus Drop, Tippus Summer Residence, Brahmashram, Cycling, Paragliding" 
       android:textSize="16sp" > 
      </TextView> 
     </TableRow> 
    </TableLayout> 

Quello che dovrebbe essere simile

enter image description here

+0

Provare a riempimento del testo? – Dinesh

+0

@Dinesh sì, l'ho provato. non aiuta veramente –

+0

vuoi dire che vuoi 230 km sul lato sinistro –

risposta

1

Il modo più semplice che posso hink di è quello di avvolgere ogni contenuto TableRow con un LinearLayout come questo:

<TableLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/tableLayout1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 

     <TableRow 
      android:id="@+id/tableRow2" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:paddingBottom="10dp" > 

      <LinearLayout 
       android:layout_width="wrap_content" 
       android:layout_height="match_parent" > 

       <ImageView 
        android:id="@+id/place_category_icon" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_centerVertical="true" 
        android:contentDescription="ss" 
        android:paddingRight="10dp" 
        android:src="@drawable/ic_launcher" /> 

       <TextView 
        android:id="@+id/textView2" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_centerVertical="true" 
        android:layout_gravity="center" 
        android:text="230 kms" 
        android:textSize="16sp" > 
       </TextView> 
      </LinearLayout> 
     </TableRow> 

     <TableRow 
      android:id="@+id/tableRow2" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:paddingBottom="10dp" > 

      <LinearLayout 
       android:layout_width="wrap_content" 
       android:layout_height="match_parent" > 

       <ImageView 
        android:id="@+id/place_category_icon" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_centerVertical="true" 
        android:contentDescription="ss" 
        android:paddingRight="10dp" 
        android:src="@drawable/ic_launcher" /> 

       <TextView 
        android:id="@+id/textView2" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_centerVertical="true" 
        android:layout_gravity="center" 
        android:text="Hill Station, Wild Life" 
        android:textSize="16sp" > 
       </TextView> 
      </LinearLayout> 
     </TableRow> 

     <TableRow 
      android:id="@+id/tableRow2" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:paddingBottom="10dp" > 

      <LinearLayout 
       android:layout_width="wrap_content" 
       android:layout_height="match_parent" > 

       <ImageView 
        android:id="@+id/place_category_icon" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_centerVertical="true" 
        android:contentDescription="ss" 
        android:paddingRight="10dp" 
        android:src="@drawable/ic_launcher" /> 

       <TextView 
        android:id="@+id/textView2" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_centerVertical="true" 
        android:layout_gravity="center" 
        android:text="Summer 23-40°C, Winter 10-32°C" 
        android:textSize="16sp" > 
       </TextView> 
      </LinearLayout> 
     </TableRow> 

     <TableRow 
      android:id="@+id/tableRow2" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:paddingBottom="10dp" > 

      <LinearLayout 
       android:layout_width="wrap_content" 
       android:layout_height="match_parent" > 

       <ImageView 
        android:id="@+id/place_category_icon" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_centerVertical="true" 
        android:contentDescription="ss" 
        android:paddingRight="10dp" 
        android:src="@drawable/ic_launcher" /> 

       <TextView 
        android:id="@+id/textView2" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_centerVertical="true" 
        android:layout_gravity="center" 
        android:text="Tippus Drop, Tippus Summer Residence, Brahmashram, Cycling, Paragliding" 
        android:textSize="16sp" > 
       </TextView> 
      </LinearLayout> 
     </TableRow> 
    </TableLayout> 

E questo è il risultato:

layout

Spero correttamente capito le vostre esigenze.

+0

Grazie. Esiste comunque la possibilità di impostare l'ultimo set di righe per iniziare al centro e quindi scorrere verso il basso? Ho aggiornato la mia risposta per mostrare cosa voglio ottenere –

+1

Se aggiungi paddingTop a TextView puoi ottenere questo risultato.Non sono sicuro che ci sia un modo più efficiente per farlo però. – Andrei

1

La mia ipotesi - cambiare il layout_width e di sbarazzarsi della gravità:

<TextView 
      android:id="@+id/textView2" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_centerVertical="true" 
      ... 
      > 
     </TextView> 
+0

non aiuta :( –

2

Dal momento che un TableRow è praticamente un orizzontale orientata LinearLayout, è sufficiente utilizzare i principi di pesi per rendere la TextView riempire tutto lo spazio dopo il ImageView. Significa che avrebbe dovuto cambiare le righe da un po 'come questo:

<!-- no need to set width/height as those are implicitly enforced --> 
    <TableRow 
     android:id="@+id/tableRow2" 
     android:paddingBottom="10dp" > 

     <ImageView 
      android:id="@+id/place_category_icon" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:contentDescription="ss" 
      android:paddingRight="10dp" 
      android:src="@drawable/icon_category" /> 

     <!-- width of '0' and weight of '1' will make this view fill up all remaining space --> 
     <TextView 
      android:id="@+id/textView2" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:layout_gravity="center_vertical" 
      android:text="230 kms" 
      android:textSize="16sp" /> 

    </TableRow> 

Ho anche rimosso/modificato alcuni attributi superflui. Fai attenzione che l'ho appena scritto direttamente nel browser: potrebbero esserci degli errori o errori di battitura.

+0

hai fornito android: layout_width = "0dp" perché è ZERO? –

+3

Questa è una pratica comune quando si occupa di pesi e 'LinearLayout's, in quanto accelera il processo di misurazione/layout.In questo scenario non ti interessa la larghezza iniziale, ma piuttosto come lo spazio rimanente viene distribuito tra le viste secondarie. Funzionerà anche con 'wrap_content', ma è leggermente meno efficiente. –