2 ete  ghost Ete__ghost 于 2015.05.25 17:08 提问

Android xml布局 weight 问题

在下面的代码中,Android studio提示
Layout weights require a widget to be measured twice. When a LinearLayout
with non-zero weights is nested inside another LinearLayout with non-zero
weights ,then the number of measurements increases exponently.
这要怎么改?

//这段是从一段里截取的

   <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

        <Button
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:text="@string/again"
            android:id="@+id/again"
            android:layout_weight="1"/>

        <Button
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:text="@string/confirm"
            android:id="@+id/confirm"
            android:layout_weight="1" />
    </LinearLayout>

8个回答

zsf159258346
zsf159258346   2015.05.25 17:18

你就一个LinearLayout,你怎么用weight属性呢,两个button有一个父LinearLayout,此LinearLayout有宽度故可以用weight。如果你的LinearLayout也有父节点,就可以用weight。
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<!--设置高度,去掉weight-->

    <Button
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:text="@string/again"
        android:id="@+id/again"
        android:layout_weight="1"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:text="@string/confirm"
        android:id="@+id/confirm"
        android:layout_weight="1" />
</LinearLayout>   <LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1">

    <Button
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:text="@string/again"
        android:id="@+id/again"
        android:layout_weight="1"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:text="@string/confirm"
        android:id="@+id/confirm"
        android:layout_weight="1" />
</LinearLayout>
zsf159258346
zsf159258346   2015.05.25 17:19

不好意思代码多复制了一段,看上边的

Ete__ghost
Ete__ghost 是从一段里截取的,提示这个我要怎么改?
2 年多之前 回复
bdmh
bdmh   Ds   Rxr 2015.05.25 17:19

顶层layout可以不用,里面的button要平分就是用weight一样的值

Ete__ghost
Ete__ghost 哦我这个是从一段里截来的
2 年多之前 回复
danielinbiti
danielinbiti   Ds   Rxr 2015.05.25 17:28

这是Android-Lint功能,报错是因为最外层layout_weight无意义,影响性能。所以提示错误
eclipse可以http://blog.csdn.net/lidhsr/article/details/38435733关闭,
可以看看studio http://blog.sina.com.cn/s/blog_4e1e357d0102wbjc.html里面是不是也有设置

danielinbiti
danielinbiti 回复__ghost: 那你的外层在哪呢,关键得有外层布局才行,就你贴的,没看到外层是什么样的。如果外层里面就只有这一个Linearylayout,那就没意义,除非有多个
2 年多之前 回复
Ete__ghost
Ete__ghost 没意义?如果没有外层的的weight怎么决定这一块在我整个xml中的比例呢?新人不太明白,我觉得不会没意义啊
2 年多之前 回复
csd123n123
csd123n123   2015.05.26 09:44

你这一段设置的android:orientation="horizontal"是水平布局,但是你设置android:layout_width="fill_parent"
android:layout_height="0dp"这样就和水平布局冲突了,应该设置为android:layout_width="0dp"
android:layout_height="fill_parent"

stringsdn
stringsdn   2015.05.26 15:40

父子都用了weight 测量时会需要很久

sirnuo
sirnuo   2015.05.27 10:11

这个其实不算错误,只是提醒你这样嵌套 layout weight 属性,会使控件多次测量宽高,不提倡而已。

crazy1235
crazy1235   Ds   Rxr 2015.05.31 16:09

顶层layout最好不用,
里面的两个button设置weight一样的值,就均分父控件的大小了。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!