2012-12-06 20 views
15

Ho creato un TableLayout in cui voglio che ogni riga abbia la stessa altezza, indipendentemente dal suo contenuto. Come posso fare questo?Layout tabella con altezza file uguale

Ecco il mio codice. Ogni elemento riga ottiene la stessa larghezza, ma le altezze non sono uguali. Che cosa sto facendo di sbagliato?

<TableLayout 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content"     android:background="@color/grey" 
       android:padding="1dip" > 

       <TableRow 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:layout_weight="1" 
        android:background="@color/grey" > 

        <LinearLayout 
         android:layout_width="0dip" 
         android:layout_height="fill_parent" 
         android:layout_weight="1" 
         android:background="@color/white" 
         android:orientation="vertical" > 

         <TextView 
          android:layout_width="fill_parent" 
          android:layout_height="fill_parent" 
          android:layout_gravity="center_vertical" 
          android:layout_marginBottom="5dip" 
          android:layout_marginTop="2dip" 
          android:layout_weight="1" 
          android:background="@color/white" 
          android:gravity="center_horizontal" 
          android:text="@string/car_make" 
          android:textStyle="bold" /> 

         <TextView 
          android:id="@+id/carMake" 
          android:layout_width="fill_parent" 
          android:layout_height="fill_parent" 
          android:layout_gravity="center_vertical" 
          android:layout_marginLeft="1dip" 
          android:layout_weight="1" 
          android:background="@color/white" 
          android:gravity="center_horizontal" 
          android:text="@string/car_detail" /> 
        </LinearLayout> 

        <LinearLayout 
         android:layout_width="0dip" 
         android:layout_height="fill_parent" 
         android:layout_weight="1" 
         android:background="@color/white" 
         android:orientation="vertical" > 

         <TextView 
          android:layout_width="fill_parent" 
          android:layout_height="fill_parent" 
          android:layout_gravity="center_vertical" 
          android:layout_marginBottom="5dip" 
          android:layout_marginTop="2dip" 
          android:layout_weight="1" 
          android:background="@color/white" 
          android:gravity="center_horizontal" 
          android:text="@string/car_model" 
          android:textStyle="bold" /> 

         <TextView 
          android:id="@+id/carModel" 
          android:layout_width="fill_parent" 
          android:layout_height="fill_parent" 
          android:layout_gravity="center_vertical" 
          android:layout_weight="1" 
          android:background="@color/white" 
          android:gravity="center_horizontal" 
          android:text="@string/car_detail" /> 
        </LinearLayout> 

        <LinearLayout 
         android:layout_width="0dip" 
         android:layout_height="fill_parent" 
         android:layout_weight="1" 
         android:background="@color/white" 
         android:orientation="vertical" > 

         <TextView 
          android:layout_width="fill_parent" 
          android:layout_height="fill_parent" 
          android:layout_gravity="center_vertical" 
          android:layout_marginBottom="5dip" 
          android:layout_marginTop="2dip" 
          android:layout_weight="1" 
          android:background="@color/white" 
          android:gravity="center_horizontal" 
          android:text="@string/car_version" 
          android:textStyle="bold" /> 

         <TextView 
          android:id="@+id/carYear" 
          android:layout_width="fill_parent" 
          android:layout_height="fill_parent" 
          android:layout_gravity="center_vertical" 
          android:layout_weight="1" 
          android:background="@color/white" 
          android:gravity="center_horizontal" 
          android:text="@string/car_year" /> 
        </LinearLayout> 
       </TableRow> 

       <TableRow 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:layout_marginTop="1dip" 
        android:layout_weight="1" 
        android:background="@color/grey" > 

        <LinearLayout 
         android:layout_width="0dip" 
         android:layout_height="fill_parent" 
         android:layout_weight="1" 
         android:background="@color/white" 
         android:orientation="vertical" > 

         <TextView 
          android:layout_width="fill_parent" 
          android:layout_height="wrap_content" 
          android:layout_gravity="center_vertical" 
          android:layout_marginBottom="5dip" 
          android:layout_marginTop="2dip" 
          android:background="@color/white" 
           android:gravity="center_horizontal" 
          android:text="@string/car_year" 
          android:textStyle="bold" /> 

         <TextView 
          android:id="@+id/carYear" 
          android:layout_width="fill_parent" 
          android:layout_height="wrap_content" 
          android:layout_gravity="center_vertical" 
          android:background="@color/white" 
          android:gravity="center_horizontal" 
          android:text="@string/car_year" /> 
        </LinearLayout> 

        <LinearLayout 
         android:layout_width="0dip" 
         android:layout_height="fill_parent" 
         android:layout_weight="1" 
         android:background="@color/white" 
         android:orientation="vertical" > 

         <TextView 
          android:layout_width="fill_parent" 
          android:layout_height="wrap_content" 
          android:layout_gravity="center_vertical" 
          android:layout_marginBottom="5dip" 
          android:layout_marginTop="2dip" 
          android:background="@color/white" 
          android:gravity="center_horizontal" 
          android:text="@string/car_mileage" 
          android:textStyle="bold" /> 

         <TextView 
          android:id="@+id/carYear" 
          android:layout_width="fill_parent" 
          android:layout_height="wrap_content" 
          android:layout_gravity="center_vertical" 
          android:background="@color/white" 
          android:gravity="center_horizontal" 
          android:text="@string/car_year" /> 
        </LinearLayout> 

        <LinearLayout 
         android:layout_width="0dip" 
         android:layout_height="fill_parent" 
         android:layout_weight="1" 
         android:background="@color/white" 
         android:orientation="vertical" > 

         <TextView 
          android:layout_width="fill_parent" 
          android:layout_height="wrap_content" 
          android:layout_gravity="center_vertical" 
          android:layout_marginBottom="5dip" 
          android:layout_marginTop="2dip" 
          android:background="@color/white" 
          android:gravity="center_horizontal" 
          android:text="@string/car_engine_capacity" 
          android:textStyle="bold" /> 

         <TextView 
          android:id="@+id/carYear" 
          android:layout_width="fill_parent" 
          android:layout_height="fill_parent" 
          android:layout_gravity="center_vertical" 
          android:background="@color/white" 
          android:gravity="center_horizontal" 
          android:text="@string/car_year" /> 
        </LinearLayout> 
       </TableRow> 

       <TableRow 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:layout_marginTop="1dip" 
        android:layout_weight="1" 
        android:background="@color/grey" > 

        <LinearLayout 
         android:layout_width="0dip" 
         android:layout_height="fill_parent" 
         android:layout_weight="1" 
         android:background="@color/white" 
         android:orientation="vertical" > 

         <TextView 
          android:layout_width="fill_parent" 
          android:layout_height="wrap_content" 
          android:layout_gravity="center_vertical" 
          android:layout_marginBottom="5dip" 
          android:background="@color/white" 
          android:gravity="center_horizontal" 
          android:text="@string/car_engine_type" 
          android:textStyle="bold" /> 

         <TextView 
          android:id="@+id/carYear" 
          android:layout_width="fill_parent" 
          android:layout_height="wrap_content" 
          android:layout_gravity="center_vertical" 
          android:background="@color/white" 
          android:gravity="center_horizontal" 
          android:text="@string/car_year" /> 
        </LinearLayout> 

        <LinearLayout 
         android:layout_width="0dip" 
         android:layout_height="fill_parent" 
         android:layout_weight="1" 
         android:background="@color/white" 
         android:orientation="vertical" > 

         <TextView 
          android:layout_width="fill_parent" 
          android:layout_height="wrap_content" 
          android:layout_gravity="center_vertical" 
          android:layout_marginBottom="5dip" 
          android:background="@color/white" 
          android:gravity="center_horizontal" 
          android:text="@string/car_exterior_color" 
          android:textStyle="bold" /> 

         <TextView 
          android:id="@+id/carYear" 
          android:layout_width="fill_parent" 
          android:layout_height="wrap_content" 
          android:layout_gravity="center_vertical" 
          android:background="@color/white" 
          android:gravity="center_horizontal" 
          android:text="@string/car_year" /> 
        </LinearLayout> 

        <LinearLayout 
         android:layout_width="0dip" 
         android:layout_height="fill_parent" 
         android:layout_weight="1" 
         android:background="@color/white" 
         android:orientation="vertical" > 

         <TextView 
          android:layout_width="fill_parent" 
          android:layout_height="wrap_content" 
          android:layout_gravity="center_vertical" 
          android:layout_marginBottom="5dip" 
          android:background="@color/white" 
          android:gravity="center_horizontal" 
          android:text="@string/car_city" 
          android:textStyle="bold" /> 

         <TextView 
          android:id="@+id/carYear" 
          android:layout_width="fill_parent" 
          android:layout_height="wrap_content" 
          android:layout_gravity="center_vertical" 
          android:background="@color/white" 
          android:gravity="center_horizontal" 
          android:text="@string/car_year" /> 
        </LinearLayout> 
       </TableRow> 

       <TableRow 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:layout_marginTop="1dip" 
        android:layout_weight="1" 
        android:background="@color/grey" > 

        <LinearLayout 
         android:layout_width="0dip" 
         android:layout_height="fill_parent" 
         android:layout_weight="1" 
         android:background="@color/white" 
         android:orientation="vertical" > 

         <TextView 
          android:layout_width="fill_parent" 
          android:layout_height="wrap_content" 
          android:layout_gravity="center_vertical" 
          android:layout_marginBottom="5dip" 
          android:background="@color/white" 
          android:gravity="center_horizontal" 
          android:text="@string/car_transmittion" 
          android:textStyle="bold" /> 

         <TextView 
          android:id="@+id/carYear" 
          android:layout_width="fill_parent" 
          android:layout_height="wrap_content" 
          android:layout_gravity="center_vertical" 
          android:background="@color/white" 
          android:gravity="center_horizontal" 
          android:text="@string/car_year" /> 
        </LinearLayout> 

        <LinearLayout 
         android:layout_width="0dip" 
         android:layout_height="fill_parent" 
         android:layout_weight="1" 
         android:background="@color/white" 
         android:orientation="vertical" > 

         <TextView 
          android:layout_width="fill_parent" 
          android:layout_height="wrap_content" 
          android:layout_gravity="center_vertical" 
          android:layout_marginBottom="5dip" 
          android:background="@color/white" 
          android:gravity="center_horizontal" 
          android:text="@string/car_area" 
          android:textStyle="bold" /> 

         <TextView 
          android:id="@+id/carYear" 
          android:layout_width="fill_parent" 
          android:layout_height="wrap_content" 
          android:layout_gravity="center_vertical" 
          android:background="@color/white" 
          android:gravity="center_horizontal" 
          android:text="@string/car_year" /> 
        </LinearLayout> 

         <LinearLayout 
         android:layout_width="0dip" 
         android:layout_height="fill_parent" 
         android:layout_weight="1" 
         android:background="@color/white" 
         android:orientation="vertical" > 

         <TextView 
          android:layout_width="fill_parent" 
          android:layout_height="wrap_content" 
          android:layout_gravity="center_vertical" 
          android:layout_marginBottom="5dip" 
          android:background="@color/white" 
          android:gravity="center_horizontal" 
          android:text="@string/car_registered_city" 
          android:textStyle="bold" /> 

         <TextView 
          android:id="@+id/carYear" 
          android:layout_width="fill_parent" 
          android:layout_height="wrap_content" 
          android:layout_gravity="center_vertical" 
          android:background="@color/white" 
          android:gravity="center_horizontal" 
          android:text="@string/car_year" /> 
        </LinearLayout> 
       </TableRow> 
      </TableLayout> 

risposta

-4

si può cambiare nella tua TableRow -> LinearLayout

<LinearLayout 
        android:layout_width="0dip" 
        android:layout_height="wrap_content"  
        android:layout_weight="1" 
        android:background="@color/white" 
        android:orientation="vertical" > 
+12

Questo non è quello che ha chiesto. E anche se ciò ha funzionato per lui questa non è una soluzione su come fare un TableView con uguali altezze. –

-2
<TableRow 
       android:layout_width="fill_parent" 
       android:layout_height="xxdip" // HERE define a fixed size 
+0

Nopes non funziona. L'altezza sembra essere corretta. Cosa c'è di sbagliato qui? – AndroidDev

+0

non consente di cambiare layout_height. È stato risolto dal sistema per essere sempre WRAP_CONTENT – Paul

4

qui è la soluzione:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <TableLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" > 

     <TableRow 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:weightSum="4" > 

      <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="1dp" 
       android:layout_weight="1" 
       android:background="#B0B0B0" /> 

      <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="1dp" 
       android:layout_weight="1" 
       android:background="#B0B0B0" /> 

      <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="1dp" 
       android:layout_weight="1" 
       android:background="#B0B0B0" /> 

      <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:background="#B0B0B0" /> 
     </TableRow> 

     <TableRow 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="1dp" 
      android:orientation="vertical" 
      android:weightSum="4" > 

      <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="1dp" 
       android:layout_weight="1" 
       android:background="#B0B0B0" /> 

      <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="1dp" 
       android:layout_weight="1" 
       android:background="#B0B0B0" /> 

      <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="1dp" 
       android:layout_weight="1" 
       android:background="#B0B0B0" /> 

      <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:background="#B0B0B0" /> 
     </TableRow> 

     <TableRow 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="1dp" 
      android:orientation="vertical" 
      android:weightSum="4" > 

      <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="1dp" 
       android:layout_weight="1" 
       android:background="#B0B0B0" /> 

      <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="1dp" 
       android:layout_weight="1" 
       android:background="#B0B0B0" /> 

      <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="1dp" 
       android:layout_weight="1" 
       android:background="#B0B0B0" /> 

      <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:background="#B0B0B0" /> 
     </TableRow> 

     <TableRow 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="1dp" 
      android:orientation="vertical" 
      android:weightSum="4" > 

      <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="1dp" 
       android:layout_weight="1" 
       android:background="#B0B0B0" /> 

      <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="1dp" 
       android:layout_weight="1" 
       android:background="#B0B0B0" /> 

      <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="1dp" 
       android:layout_weight="1" 
       android:background="#B0B0B0" /> 

      <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:background="#B0B0B0" /> 
     </TableRow> 

     <TableRow 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="1dp" 
      android:orientation="vertical" 
      android:weightSum="4" > 

      <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="1dp" 
       android:layout_weight="1" 
       android:background="#B0B0B0" /> 

      <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="1dp" 
       android:layout_weight="1" 
       android:background="#B0B0B0" /> 

      <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="1dp" 
       android:layout_weight="1" 
       android:background="#B0B0B0" /> 

      <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:background="#B0B0B0" /> 
     </TableRow> 

     <TableRow 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="1dp" 
      android:orientation="vertical" 
      android:weightSum="4" > 

      <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="1dp" 
       android:layout_weight="1" 
       android:background="#B0B0B0" /> 

      <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="1dp" 
       android:layout_weight="1" 
       android:background="#B0B0B0" /> 

      <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="1dp" 
       android:layout_weight="1" 
       android:background="#B0B0B0" /> 

      <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:background="#B0B0B0" /> 
     </TableRow> 
    </TableLayout> 

</LinearLayout> 

enter image description here

+0

basta gestire la dimensione di textView o ogni cella secondo le tue necessità ..... –

+0

Come posso usare se ci sono LineraLayout in ogni colonna – AndroidDev

+0

hey qual è il problema puoi elaborare per favore. ... cosa vuoi fare .... puoi fare qualsiasi cosa con linearlayouts –

2

qui è una soluzione:

<TableLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 
    <TableRow 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:orientation="vertical"> 

     <TextView 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:layout_gravity="fill" 
     /> 
     <TextView 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:layout_gravity="fill" 
     /> 
    </TableRow> 
    <TableRow 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:orientation="vertical"> 

     <TextView 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:layout_gravity="fill" 
     /> 
     <TextView 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:layout_gravity="fill" 
     /> 
    </TableRow> 

+3

le risposte al solo codice sono spesso considerate di qualità inferiore. Dovresti considerare di lasciare alcune spiegazioni su * cosa * hai cambiato e * perché * dovrebbe funzionare per risolvere il problema. – codeMagic

2

Introdotto nel API 11, è possibile impostare android:measureWithLargestChild="true" sulla TableLayout e android:layout_weight="1" su ogni TableRow.

0

Ho appena trovato questo problema e l'ho risolto. Risulta che la risposta di Sunny ha funzionato per me.

Anche se come menzionato nel commento, ho potuto capire se funziona semplicemente leggendolo. Sono una newbee quindi non posso né lasciare commenti né votarli per utili. Quindi lo sto postando qui.

L'idea è di consentire a TableRow di decidere l'altezza della riga. Impostando layout_height su wrap_content, l'altezza della riga dipende dal contenuto che è TextView.

Poiché la linea di confine della cella sarebbe il limite di TextView, lo layout_height deve essere match_parent.

Vorrei che fosse utile per Android newbee (sì, sono nuovo anche per Android).

Problemi correlati