我遇到了一些有趣的行为,在线性布局中设置了两个视图的权重。
我有weightSum = 1
的水平线性布局。它有两个子视图leftView
& rightView
。我通过设置视图的权重来制作水平条形图。
如果我以权重0.05
设置左视图,并以编程方式设置权重为0.95
的右视图。 UI中显示的行为将显示左视图占据宽度的95%,右视图占宽度的5%。
如果我将其反转,请设置leftView
0.95
&带有rightView
用户界面的0.05
会显示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);
但是,如果我将leftview设置为权重为.95而右视图的权重为.05,则左视图占用空间的95%,而右视图仅占5%。
有谁可以解释这里发生的事情?
BONUS XML - 如果我设置leftView
layout_weight=0.05
和rightView
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>
答案 0 :(得分:0)
我测试了你的代码,一切都是正确的。没有问题。我想你可能犯了一个小错误。
我注意到了您的代码,我注意到您应该将remainingWeight
更改为rightViewParams
<{1}}
我希望这会有所帮助。