2012-12-22 11 views
11

Używam układu tabeli do wyświetlania danych, jak pokazano poniżej. enter image description hereWyrównanie układu tabeli Androida

Co chcę zrobić?

Chcę, aby tekst w drugiej kolumnie był wyrównany do lewej strony, a tekst powinien być zawijany i wyświetlany w następnej linii i nad przepływem, jak widać na obrazku.

Kod:

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

Co powinno wyglądać

enter image description here

+0

Spróbuj dopasować widok tekstu? – Dinesh

+0

@ Dinesh tak próbowałem tego. naprawdę nie pomaga –

+0

masz na myśli chcesz 230 km po lewej stronie –

Odpowiedz

1

The najłatwiej nie mogę hink o to, by zakończyć każdą TableRow treści z LinearLayout tak:

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

A ta jest wynikiem:

layout

nadzieję, że poprawnie rozumieć swoje wymagania.

+0

Dzięki. Czy mimo to, aby ostatni zestaw wierszy zaczął się od centrum, a następnie płynął w dół? Zaktualizowałem moją odpowiedź, aby pokazać, co chcę osiągnąć –

+1

Jeśli dodasz paddingTop do TextView, możesz to osiągnąć Nie jestem pewien, czy istnieje skuteczniejszy sposób robienia tego .. – Andrei

1

zgaduję - zmiana layout_width i pozbyć się grawitacji:

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

to nie pomoże :( –

2

Ponieważ TableRow jest dość dużo poziomo LinearLayout, wystarczy użyć zasady ciężarami aby TextView wypełnić całą przestrzeń po ImageView. Oznacza to, że trzeba zmienić wiersze nieco jak poniżej:

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

Ja również usunięte/zmienione kilka zbędnych atrybutów. Pamiętaj, że właśnie wpisałem to bezpośrednio w przeglądarce - może to wymagać nieparzystej literówki lub poprawki.

+0

Podałeś android: layout_width = "0dp" dlaczego jest ZERO? –

+3

To jest powszechna praktyka kiedy do czynienia z wagami i liniami 'LinearLayout', ponieważ przyspiesza to proces pomiaru/układu W tym scenariuszu nie dbasz o początkową szerokość, ale raczej o to, jak pozostałe spacje są rozdzielane pomiędzy widoki podrzędne. Działa również z np. 'wrap_content', jest tylko trochę mniej wydajne. –

Powiązane problemy