2012-12-22 181 views
11

我正在使用Table Layout來顯示如下所示的數據。 enter image description hereAndroid Table Layout Alignment

我想幹什麼?

我想將第二列中的文本對齊到左邊,文本應該包裝並顯示在下一行,並且如圖中所示在流程中顯示。

代碼:

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

它應該看起來像

enter image description here

+0

試試textview的填充? – Dinesh

+0

@Dinesh是的,我試過了。沒有真正的幫助 –

+0

你的意思是你想在左邊230km –

回答

1

的最簡單的方法,我不能hink的是包裝每個TableRow內容有LinearLayout這樣的:

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

這是結果:

layout

希望我理解正確你的要求。

+0

謝謝。是否有無論如何使最後一組行,開始在中心,然後向下流?已更新我的答案,以顯示我想實現的目標 –

+1

如果將paddingTop添加到TextView中,您可以實現此目的,但我不確定是否有更高效的方法來執行此操作。 – Andrei

1

我的猜測是什麼 - 改變layout_width和擺脫重力的:

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

這沒有幫助:( –

2

由於TableRow幾乎是水平方向的LinearLayout,只需使用權的原則,使TextView填補ImageView之後的所有空間。這意味着你必須改變行有點像這樣:

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

我也刪除/改變了一些多餘的屬性。請注意,我只是直接在瀏覽器中輸入這個信息 - 可能會出現奇怪的拼寫錯誤或需要調整。

+0

您提供了android:layout_width =「0dp」爲什麼它是零? –

+3

這是常見的做法處理權重和'LinearLayout',因爲它加快了測量/佈局過程,在這種情況下,您不關心初始寬度,而是關於剩餘空間在子視圖中的分佈情況。例如'wrap_content'也可以正常工作,效率稍差。 –