2

環顧一段時間後,我還沒有找到與我的問題相匹配的問題。我的問題是這樣的,我有一個ListView其條目堅持以下佈局:LinearLayout權重不填充父項

<?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="wrap_content" 
    android:baselineAligned="false" 
    android:paddingTop="5dp" 
    android:paddingBottom="5dp" 
    android:orientation="horizontal" 
    android:descendantFocusability="blocksDescendants" > 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     amdroid:layout_weight="1" 
     android:orientation="vertical" > 
     ... 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="2" 
     android:orientation="vertical" > 
     ... 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:orientation="vertical" > 
     ... 
    </LinearLayout> 
</LinearLayout> 

我希望它可以產生在第一嵌套佈局獲取可用寬度的1/4的項,第二變寬度的1/2,第三個寬度爲1/4。儘管如此,這並不是什麼情況。相反,每個嵌套佈局的寬度由於某種原因被包裝。有趣的是,如果我在父LinearLayout中指定了一個特定的寬度而不是「match_parent」,則嵌套的佈局寬度服從預期的權重。例如,下面的產生預期的結果:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="290dp" 
    android:layout_height="wrap_content" 
    android:baselineAligned="false" 
    android:paddingTop="5dp" 
    android:paddingBottom="5dp" 
    android:orientation="horizontal" 
    android:descendantFocusability="blocksDescendants" > 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     amdroid:layout_weight="1" 
     android:orientation="vertical" > 
     ... 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="2" 
     android:orientation="vertical" > 
     ... 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:orientation="vertical" > 
     ... 
    </LinearLayout> 
</LinearLayout> 

顯然,雖然,指定特定寬度忽略權重的整點。所以我的問題是這樣的:爲什麼當使用「match_parent」時,權重實際上並不會填充父LinearLayout,以及如何糾正?

哦,還有一個感興趣的最後一點,Eclipse的圖形佈局預覽產生預期的結果,當「match_parent」用於父LinearLayout寬度。只有在實際設備上仿真或使用嵌套的LinearLayouts的內容才能獲得寬度包裝。我猜這是由於佈局在ListView中的使用,但誰知道呢?

謝謝

+0

在佈局父項中放置android:weightSum =「4」。在此處瞭解更多信息http://stackoverflow.com/questions/6203609/android-percentage-layout-height – extmkv 2014-09-10 23:29:04

回答

2

好吧,我現在覺得啞巴;我的懷疑是正確的:問題出在ListView上。

我在實例化ListView的佈局中爲ListView寬度指定了「wrap_content」。通過指定「match_parent」來更正ListView寬度,可以在不依賴硬編碼的layout_width的情況下生成條目佈局的預期結果。

+1

將此標記爲正確答案,以便在將來幫助其他人!很高興你解決它 – Phiat 2014-09-10 23:52:12