2011-03-02 23 views
2

列表項的垂直中心內容我有一個布點問題,我的Android應用程序:ListView中

我有使用以下佈局項目的列表視圖consiting:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:minHeight="40px" 
android:orientation="horizontal"> 

<TextView android:layout_gravity="center_vertical" android:textSize="20px"  android:id="@+id/track_position" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> 

<LinearLayout 
android:layout_width="wrap_content" 
android:layout_height="fill_parent" 
android:orientation="vertical" 
android:layout_gravity="center_vertical" 
> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/track_name" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:paddingLeft="8dip" 
    android:textSize="14px" 
/> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/track_artist" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:paddingLeft="8dip" 
    android:textSize="8px" 

/> 

這將得到以下結果: enter image description here

但我希望將曲目標題和副標題居中。像這樣: enter image description here

所以AFAIK我做了一切,以便這將是結果。

回答

7

你需要

android:gravity="center_vertical" 

在包含兩個textViews,像這樣的LinearLayout:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:minHeight="40px" 
android:orientation="horizontal"> 
<TextView 
    android:layout_gravity="center_vertical" 
    android:textSize="20px" 
    android:id="@+id/track_position" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 
</TextView> 
<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:gravity="center_vertical" 
    android:layout_gravity="center_vertical"> 
    <TextView 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/track_name" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:paddingLeft="8dip" 
     android:textSize="14px" /> 
    <TextView 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/track_artist" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:paddingLeft="8dip" 
     android:textSize="8px" /> 
</LinearLayout> 
</LinearLayout> 
+0

謝謝你!我會在今天測試。所以引力描述了內容應該如何對齊,並且layout_gravity元素應該如何在父對象中對齊? – Chris 2011-03-03 10:07:20

+1

耶,一個人做到了!相對於相對佈局而言,改變不那麼容易。謝謝! – Chris 2011-03-03 17:12:44

5

嘗試使用android:layout_centerVertical="true"作爲track_position TextView。

編輯:在Maaalte的光正確地指出的是,以上是RelativeLayout的,我發現我的佈局我想它的實現需要什麼...

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:padding="5dp"> 
    <TextView 
     android:id="@+id/start_time_short" 
     android:layout_alignParentLeft="true" 
     android:layout_centerVertical="true" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:padding="10dp" 
     android:textSize="16sp" > 
    </TextView> 
    <TextView 
     android:id="@+id/title" 
     android:layout_toRightOf="@+id/start_time_short" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingLeft="5dp" 
     android:paddingTop="3dp" 
     android:textSize="16sp" 
     android:ellipsize="end" 
     android:singleLine="true" > 
    </TextView> 
    <TextView 
     android:id="@+id/description" 
     android:layout_toRightOf="@+id/start_time_short" 
     android:layout_below="@+id/title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingLeft="5dp" 
     android:paddingTop="3dp" 
     android:textSize="16sp" 
     android:ellipsize="end" 
     android:singleLine="true" > 
    </TextView> 
</RelativeLayout> 

在我而言,這是一個電視指南條目,左邊的TextView顯示時間(HH:mm),右邊是電視節目的標題和說明。一切都以我爲中心。

+0

我認爲這是對的RelativeLayout – Maaalte 2011-03-02 23:14:56

+0

沒關係啊,我會稍後檢查。在「線性」和「相對佈局」之間進行選擇或者是「更好」或「更好性能」兩種方式之一,還是一種方式對諸如將手機旋轉到橫向等變化做出不同的反應,都只是一種品味問題? – Chris 2011-03-03 10:10:37

+0

@Chris:我曾嘗試使用LinearLayout,但遇到類似的問題。如果我花了更多時間,也許我可以讓它工作。我在一個使用RelativeLayout的例子中遇到了一個複雜的列表項,並嘗試了一下 - 第一次使用一些小模塊時,它幾乎工作,所以我堅持使用它。 – Squonk 2011-03-03 22:25:05

0

我不熟悉這一點,只是網站造型。但是,如果曲目和樂隊總是有1行,那麼您不能只爲第二個LinearLayout塊設置paddingTop值嗎?

+0

這將是一個選項,但我打算離開項目的高度的主題,所以我不知道項目會有多高。我不明白爲什麼這適用於textview,但不適用於第二個linearlayout。 – Chris 2011-03-03 10:04:42