簡體   English   中英

有趣的布局權重行為

[英]Interesting layout weight behavior

我在設置線性布局中的兩個視圖的權重時遇到了一些有趣的行為。

我有一個weightSum = 1的水平線性布局。 它有兩個子視圖, leftViewrightView 我通過設置視圖的權重來制作水平條形圖。

如果我以編程方式設置權重為0.05的左視圖和權重為0.95的右視圖。 用戶界面中顯示的行為將顯示左側視圖占寬度的95%,右側視圖占寬度的5%。

如果我將其反轉,則將leftView設置為0.95並將rightView0.05 ,UI將顯示leftView占空間的5%(我希望它是這樣)

有誰知道為什么會這樣嗎?

float percentage= (float)(x * 100) / y; // (2000 * 100) / 40000 = 5

LinearLayout.LayoutParams leftViewParams = 
    new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.WRAP_CONTENT,
        LinearLayout.LayoutParams.WRAP_CONTENT,
        percentage/100f); // (5 / 100) = .05
leftView.setLayoutParams(leftViewParams);


LinearLayout.LayoutParams rightViewParams= 
    new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.WRAP_CONTENT, 
        LinearLayout.LayoutParams.WRAP_CONTENT,
       (100 - percentage)/100f); //(100 - 5) / 100 = .95
rightView.setLayoutParams(rightViewParams);

但是,如果將左視圖的權重設置為.95,將右視圖的權重設置為.05,則左視圖將占據95%的空間,而右視圖僅占5%的空間。

誰能解釋這里發生了什么?

獎金XML-如果我設置leftView layout_weight=0.05rightView layout_weight=0.95它將正確顯示。

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="@dimen/core_dimen_16dp"
        android:orientation="horizontal">

        <View
            android:id="@+id/leftView"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:background="#000" />

        <View
            android:id="@+id/rightView"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:background="#AAA" />

</LinearLayout>

我測試了您的代碼,一切都正確。 沒有問題。 我認為您可能會犯一個小錯誤。

我重視你的代碼,我注意到,你應該改變remainingWeightrightViewParams在該行: rightView.setLayoutParams(remainingWeight);

我希望這將有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM