2015-01-17 47 views
1

我試圖建立一個LisView項目,其中包含LinearLayout與兩個TextView對象。第一個對象需要是屏幕寬度的70%,另一個需要固定在125dp的寬度。Android的LinearyLayout與TextView

我正在使用layout_weight屬性來告訴佈局,使第一個TextView適當縮放,但我無法讓它正常工作。它在預覽框(截圖1)中看起來很好,但在模擬器中,左側的TextView總是調整大小以適應其內容(屏幕截圖2)。

有誰知道發生了什麼事?我是Android開發新手,所以這只是讓我困惑。

謝謝!

<?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="?android:attr/listPreferredItemHeight" 
    android:padding="6dip"> 

    <TextView 
     android:id="@+id/TitleTextView" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" 
     android:gravity="center_vertical" 
     android:text="Headling Rent (pa)" 
     android:textSize="16sp" /> 

    <TextView 
     android:id="@+id/ValueTextView" 
     android:layout_below="@id/TitleTextView" 
     android:layout_width="125dp" 
     android:layout_height="fill_parent" 
     android:layout_weight="0" 
     android:gravity="center_vertical" 
     android:text="20,000" 
     android:textSize="16sp" /> 

</LinearLayout> 

Design Preview Screenshot 1

Emulator Screenshot 2

回答

2

當提供的權重,寬度(或高度爲垂直佈局)必須0dp。

試試這個:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="fill_parent" 
       android:layout_height="?android:attr/listPreferredItemHeight" 
       android:weightSum="10" 
       android:padding="6dip"> 
    <TextView 
     android:id="@+id/TitleTextView" 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:layout_weight="7" 
     android:gravity="center_vertical" 
     android:text="Headling Rent (pa)" 
     android:textSize="16sp" /> 

    <TextView 
     android:id="@+id/ValueTextView" 
     android:layout_below="@id/TitleTextView" 
     android:layout_width="125dp" 
     android:layout_height="fill_parent" 
     android:gravity="center_vertical" 
     android:text="20,000" 
     android:textSize="16sp" /> 
</LinearLayout> 
+0

我試過了,並有同樣的問題。我已將您的確切佈局XML複製到我的項目中,而且我仍得到相同的結果。我讀過的所有內容都符合你提到的內容,但這對我並不適用。它可能是文本視圖的默認參數導致此行爲?我試過搜索,但無法找到任何東西。 –

+0

@ miken.mkndev您是否也在LinearLayout上設置了weightSum? – Simas

+0

是的,我也完全複製了你的例子。 –

1

好了,我已經想通了這個問題。有兩件事是不正確的。首先,@ user3249477的答案是正確的,我需要在父LinearLayout標籤中包含weightSum,並且我還需要爲應該縮放的文本元素設置寬度爲0dp。

但是,這仍然沒有真正解決我的問題。實際的問題是父級ListView的寬度和高度設置爲「wrap_content」而不是「fill_parent」。我更新了這個,佈局開始工作。

我會接受來自@ user3249477的答案,因爲他是正確的,但如果有人能夠對此答案進行投票,我也會很感激,因爲它確實允許上述修復工作。

謝謝!

+0

請記住'fill_parent'已被棄用,請使用'match_parent'。 – Simas

+0

好點。謝謝! –

+0

還可以避免使用'wrap_content'。它會加快測量過程。 – Simas