2013-05-23 12 views
6

Ho un tableLayout con due colonne e due righe, entrambe le righe e l'ultima colonna hanno match_parent per larghezza ma il layout non sta riempiendo la larghezza genitore, si compensa come se avesse wrap_content .TableLayout con layout_width = matchparent non corrispondente genitore

Ecco il codice:

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

Che cosa devo fare per tutte le righe della larghezza del genitore?

Ps: il luogo in cui lavoro non mi consente di pubblicare il mio codice, quindi scrivo un codice il più vicino possibile al mio codice. Non so se sia giusto, non posso testare.

risposta

20

Prova questo codice Penso che questo wil ti aiuta

<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 "' nel mio 'TableRow' ha fatto il trucco per me. Grazie! – Alias

1

Considera anche se ci sono altri file il cui contenuto è più ampia rispetto alle altre righe contenenti un TextView, dal momento che l'attributo di peso non funziona bene. Considerate questo esempio:

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

Quindi questo è il risultato:

  • La terza cella fila è l'impostazione ogni larghezza della cella a sinistra.
  • La prima riga EditText inizia dove termina la cella sinistra (quasi a tre quarti della larghezza dello schermo).
  • Alla seconda riga viene assegnato il peso 1 ogni cella, quindi entrambe le celle nella riga dovrebbero misurare metà dello schermo, ma poiché la prima cella è così ampia, il peso viene calcolato in proporzione, quindi anche se si imposta un peso di 50 per la cella di destra, non avrai mai metà dello schermo perché la prima cella non può essere più piccola del contenuto della terza cella.
Problemi correlati