Android布局权重不像我想的那样工作

Posted

技术标签:

【中文标题】Android布局权重不像我想的那样工作【英文标题】:Android layout weight not working as I thought 【发布时间】:2013-09-24 16:03:28 【问题描述】:

关注What does android:layout_weight mean?

我有这个:

<LinearLayout
    android:layout_
    android:layout_
    android:orientation="horizontal" >

    <Button
        android:id="@+id/buttonToastSimple"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:text="English Toast" />

    <Button
        android:id="@+id/buttonToastFancy"
        android:layout_
        android:layout_
        android:layout_weight="3"
        android:text="French Toast" />

</LinearLayout>

链接告诉我 buttonToastFancy 将占据四分之三的大小 (3/(3+1),但反过来说。根据 Eclipse/我的 AVD,buttonToastSimple 占据四分之三的屏幕大小。

我做错了什么?

【问题讨论】:

【参考方案1】:
<LinearLayout
    android:layout_
    android:layout_
    android:weightSum="4"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/buttonToastSimple"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:text="English Toast" />

    <Button
        android:id="@+id/buttonToastFancy"
        android:layout_
        android:layout_
        android:layout_weight="3"
        android:text="French Toast" />

</LinearLayout>

尝试将想要的属性设置为0dp ..

例如。如果要设置宽度支持的权重,请使用 android:layout_width="0dp"android:layout_weight="3"。另外,不要忘记父级中的android:weightSum="4"

【讨论】:

这很好,谢谢。我的 'fill_parent' 值发生了什么事,使它反转了一切? 欢迎,如果有效,请您接受并投票赞成答案。因为 fill parent 意味着填充可用空间,所以当你将它设置为 1 并且有更多可用空间时它会占用它,而不是跟随它的重量。 将宽度值设置为 0dp 正是解决我问题的方法。谢谢!【参考方案2】:

您的视图将占用的空间量计算为 尺寸/布局重量因此具有较低布局重量的视图在您的布局中占据更多空间。将来,您可能还需要使用 layout_weightSum。

他们是further explained here。

【讨论】:

以上是关于Android布局权重不像我想的那样工作的主要内容,如果未能解决你的问题,请参考以下文章

这个节点不像我想象的那样工作?

Clickhouse:runningAccumulate() 不像我预期的那样工作

sleep() 不像我预期的那样工作

我不能像我想的那样返回字符串切片。只通过最后一个

变形金刚 BartTokenizer::add_tokens() 不像我对后缀的预期那样工作

QUdpSocket 高速率消息读取