2012-12-02 87 views
0

我想創建一個類似如下的列表項: -TextView的跨越2行與RelativeLayout的

| date | src | type | value | 
|  description | .. | 

我用的是相對佈局如下圖所示: -

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 

    <TextView 
     android:id="@+id/date" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true"> 
    </TextView> 

    <TextView 
     android:id="@+id/src" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@id/date" 
     android:layout_alignParentTop="true"> 
    </TextView> 

    <TextView 
     android:id="@+id/type" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@id/src"   
     android:layout_alignParentTop="true"> 
    </TextView> 

    <TextView 
     android:id="@+id/value" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:gravity="right" 
     android:layout_toRightOf="@id/type"   
     android:layout_alignParentTop="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentBottom="true" 
     android:textAppearance="?android:attr/textAppearanceLarge"/>  

    <TextView 
     android:id="@+id/description" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/date" 
     android:layout_toLeftOf="@id/value" 
     android:layout_alignRight="@id/type" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentBottom="true"> 
    </TextView> 
</RelativeLayout> 

但我得到更像是這樣的: -

| date | src | type | 
|  description | value | 

我不能得到最右邊的單元格跨兩行。我是以錯誤的方式使用它還是有另一種正確的佈局類型。

感謝

+0

你的代碼對於'require'看起來不錯。嘗試引用'other layouts'的地方添加'+'像'android:layout_toLeftOf =「@ + id/value」' –

+0

嘗試更改值TextView的重力。 'android:gravity =「right | top」'或'android:gravity =「right | center_vertical」'(取決於您希望文本是從頂部還是中心開始)。 – Barak

+0

謝謝。將重力更新爲「頂部|右側」和「頂部」,但值單元仍具有與描述相同的高度。 – Himanshu

回答

1

我試過了你提供的代碼,它的工作方式如下。看到下面的圖片(我添加了一些顏色和文字,所以我實際上可以在GUI佈局編輯器中看到它)。

enter image description here

不過,我認爲更好的實現可能是一起的,你在找什麼會是這樣的線路更多:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 
    <TextView 
     android:id="@+id/date" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" > 
    </TextView> 
    <TextView 
     android:id="@+id/src" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_toRightOf="@id/date" > 
    </TextView> 
    <TextView 
     android:id="@+id/type" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_toRightOf="@id/src" > 
    </TextView> 
    <TextView 
     android:id="@+id/value" 
     android:layout_width="wrap_content" 
     android:layout_height="0dp" 
     android:layout_alignBottom="@+id/description" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:layout_toRightOf="@id/type" 
     android:background="@color/red" 
     android:gravity="center|center" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 
    <TextView 
     android:id="@id/description" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignRight="@id/type" 
     android:layout_below="@id/date" 
     android:layout_toLeftOf="@id/value" > 
    </TextView> 
</RelativeLayout> 

它給你這樣的:

enter image description here

+0

是的,最後一個按我想要的方式工作。謝謝。 – Himanshu

1

這爲我工作:

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

<TextView 
    android:id="@+id/date" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 
</TextView> 

<TextView 
    android:id="@+id/src" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_toRightOf="@+id/date"> 
</TextView> 

<TextView 
    android:id="@+id/type" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_toRightOf="@+id/src"> 
</TextView> 

<TextView 
    android:id="@+id/value" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:layout_toRightOf="@+id/type" 
    android:gravity="right"  
    android:layout_alignParentRight="true" 
    android:textAppearance="?android:attr/textAppearanceLarge"/> 

<TextView 
    android:id="@+id/description" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/date" 
    android:layout_toLeftOf="@id/value" 
    android:layout_alignRight="@id/value"> 
</TextView> 
</RelativeLayout> 
+0

感謝您的回覆。它沒有工作。單元格的背景顏色仍然顯示值單元格只與描述單元格一樣高。 – Himanshu

+0

感謝您的檢查。這使單元格向上移動,但並沒有像類型和描述一樣高。最後一個layout_alignRight應該是「@ id/type」。 – Himanshu

0

我認爲你應該使用兩個LinearLayout中(一個或多個)所分配權重的TextView(S)

喜歡這個

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

    <LinearLayout 
     android:id="@+id/linearLayout1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:weightSum="4" > 

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

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

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

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

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentRight="true" 
     android:weightSum="2" 

     android:layout_below="@+id/linearLayout1" > 

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

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

    </LinearLayout> 

</RelativeLayout> 

編輯:這應該工作,如果你想要預定義數量的元素,如上所述