2013-05-23 16 views
6

Mam tableLayout z dwiema kolumnami i dwoma wierszami, oba wiersze i ostatnia kolumna mają match_parent dla szerokości, ale układ nie wypełnia szerokości rodzica, to komportuje się tak, jakby miał wrap_content .TableLayout with layout_width = matchparent nie pasuje do rodzica

Oto kod:

<TableLayout android:layout_width="match_parent"> 
    <TableRow android:layout_width="match_parent"> 
     <TextView 
      android:layout_width="wrap_content" 
      android:text="static" /> 
     <EditText 
      android:layout_width="match_parent" 
      android:text="text" /> 
    </TableRow> 

    <TableRow android:layout_width="match_parent"> 
     <TextView 
      android:layout_width="wrap_content" 
      android:text="static2" /> 
     <EditText 
      android:layout_width="match_parent" 
      android:text="text2" /> 
    </TableRow> 
</TableLayout> 

Co muszę zrobić dla każdej linii o szerokości rodzica?

Ps: Miejsce, w którym pracuję, nie pozwala mi przesłać mojego kodu, więc piszę kod jak najbliżej kodu. Nie wiem, czy to prawda, nie mogę tego przetestować.

Odpowiedz

20

Spróbuj tego kodu myślę, że to wil pomaga

<TableLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    > 

    <TableRow android:layout_width="match_parent" > 

     <TextView 
      android:layout_width="fill_parent" 
      android:layout_weight="1" 
      android:text="static" /> 

     <EditText 
      android:layout_width="match_parent" 
      android:layout_weight="1" 
      android:text="text" /> 
    </TableRow> 

    <TableRow android:layout_width="match_parent" > 

     <TextView 
      android:layout_width="fill_parent" 
      android:layout_weight="1" 
      android:text="static2" /> 

     <EditText 
      android:layout_width="match_parent" 
      android:layout_weight="1" 
      android:text="text2" /> 
    </TableRow> 
</TableLayout> 
+3

'android: layout_weight =" 1 "' w moim 'TableRow' zrobił mi sztuczkę. Dzięki! – Alias

1

także rozważyć, czy istnieją inne wiersze, których zawartość jest szerszy niż w innych wierszy zawierających TextView, ponieważ atrybut waga nie będzie działać dobrze. Rozważmy następujący przykład:

<?xml version="1.0" encoding="utf-8"?> 
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/diseno" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 

    <TableRow 
     android:id="@+id/tableRow1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

      <TextView 
       android:id="@+id/nombre" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/nombre" /> 

       <EditText 
        android:id="@+id/campo1" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:inputType="text" /> 

    </TableRow> 

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

     <TextView 
      android:id="@+id/apellidos" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/apellidos" 
      android:layout_weight="1"/> 

     <EditText 
      android:id="@+id/campo2" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:inputType="text" 
      android:layout_weight="1" /> 

    </TableRow> 

    <TableRow 
     android:id="@+id/tableRow3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" > 

     <CheckBox 
      android:id="@+id/tick" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:checked="false" 
      android:text="@string/¿Quieres suscribirte a la página?"/> 

    </TableRow> 

Więc ta jest wynikiem:

  • Trzecia komórka wiersz jest ustawienie wszelkich lewo szerokość komórki.
  • Pierwszy wiersz EditText rozpoczyna się w miejscu, w którym kończy się lewa komórka (prawie trzy czwarte szerokości ekranu).
  • Drugi rząd otrzymuje wagę 1 dla każdej komórki, więc obie komórki w rzędzie powinny mierzyć połowę ekranu, ale ponieważ pierwsza komórka jest tak szeroka, waga jest obliczana proporcjonalnie, więc nawet jeśli ustawi się wagę 50 dla właściwej komórki nigdy nie dostaniesz połowy ekranu, ponieważ pierwsza komórka nie może być mniejsza niż zawartość trzeciej komórki.