2011-07-11 7 views
52

Powiel możliwe:
XML Table layout? Two EQUAL-width rows filled with equally width buttons?równy szerokości kolumn w tabeli układu w Android

używam TableLayout do listy danych pokazują w 4 kolumnach.

Opis problemu:

jestem w stanie ustawić jednakową szerokość wszystkich 4 kolumnach, które są w moim TableLayout. kładę mój kod układ, który używam ...

<TableLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:stretchColumns="0"> 
     <TableRow> 
      <TextView android:text="table header1" android:layout_width="wrap_content" android:layout_height="wrap_content" 
       android:textSize="10dip" android:textStyle="bold"/>  
      <TextView android:text="table header2" android:layout_width="wrap_content" android:layout_height="wrap_content" 
       android:textSize="10dip" android:textStyle="bold"/> 
      <TextView android:text="table header3" android:layout_width="wrap_content" android:layout_height="wrap_content" 
       android:textSize="10dip" android:textStyle="bold"/> 
      <TextView android:text="table header4" android:layout_width="wrap_content" android:layout_height="wrap_content" 
       android:textSize="10dip" android:textStyle="bold"/>   
     </TableRow> 
    </TableLayout> 

Jak należy przepisać ten układ do pokazania 4 kolumny o równych rozmiarach?

+1

http://stackoverflow.com/q/2865497/778427 –

+0

@Glendon Trullinger waoooo swoją pracę. dzięki. –

Odpowiedz

143

Try this.

Sprowadza się ona do dodawania android:stretchColumns="*" do TableLayout korzenia i ustawienie android:layout_width="0dp" do wszystkich dzieci w swoim TableRow s.

<TableLayout 
    android:stretchColumns="*" // Optionally use numbered list "0,1,2,3,..." 
> 
    <TableRow 
     android:layout_width="0dp" 
    > 
+15

Tylko mała uwaga ... Musiałem także dodać "android: layout_weight =" 1 "" do dzieci z "TableRows", żeby działał. – Asaf

+28

odcinki powinny mieć wartość "*", a nie 1, aby wszystkie kolumny miały jednakową szerokość. – Yevgeniy

+3

To rozwiązanie działa dla mnie, ale szukałem sposobu, aby zrobić to programowo. Użyłem 'setStretchAllColumns (true)' na 'TableLayout' i' setLayoutParams (new TableRow.LayoutParams (0, TableRow.LayoutParams.WRAP_CONTENT)) 'na każdym potomku' TableRow'. Ustawienie masy nie wydaje się konieczne. –

63

Zmiana android:stretchColumns wartość *

wartość 0 oznacza kolumna rozciągliwość 1. Wartość 1 oznacza rozciąganie kolumny 2 i tak dalej.

Wartość * środki rozciągnąć wszystkie kolumny

+8

Nie działa, jeśli kolumna 1 jest tekstem, to jej rozszerzenie. – Palani

+1

Tak, to nie działa – Ted

+11

Po prostu usuń Androida: stretchColumns = "0" i dodaj android: layout_weight = "1" do wszystkich czterech, a otrzymasz pożądany wynik. – user2779311

Powiązane problemy