使用0dip的layout_height而不是wrap_content可以提高性能......如何去除此警告。

6

如何消除这个警告?

使用0dip的layout_height代替wrap_content可以提高性能。


3
将layout_height设置为0dp?或者移除layout_weight属性(我猜你正在使用这个属性)。没有看到你的布局文件,没有更多人可以建议了。 - Ted Hopp
1
如果你看到这个警告,99%的情况下,你可以安全地进行更改,而不会破坏你的布局。 - Niko
4个回答

24

好的,让我通过一个例子来解释一下:

<?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="match_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Hello World!!" />

</LinearLayout>

在上面的例子中,我使用了android:layout_weight="1"来为TextView指定布局权重,告诉布局我的TextView将占用与父布局(LinearLayout)相同的高度。因此,在这种情况下,android:layout_height="wrap_content"是没有用的,因为TextView将具有父LinearLayout的完整大小。所以,在这种情况下,最好添加android:layout_height="0dp",使TextView自动调整大小以适应父布局的高度。


谢谢兄弟,我现在明白了,非常感谢。 - Salman Amjad

0

如果您为layout_weight指定了任何值,即使它被设置为0也会引发此警告。

问题在于,在将其设置为0dp的情况下,高度/宽度为0,结果元素根本不会显示。只需删除layout_weight参数,一切都很好。

当然,正如许多其他人所说,如果您指定了大于零的layout_weight,则这不是一个问题。只需将layout_heightlayout_width(取决于布局)设置为0dp即可。


0
我刚遇到了这个问题,所以...
请确保父布局的方向设置与您想要 weightSum 对应的方向匹配。
换句话说,如果您想使用 weightSum 属性与子 View 的 layout_width 一起使用,请确保父布局的方向设置为 "horizontal"。
或者:
如果您想使用 weightSum 属性与子 View 的 layout_height 一起使用,请将父布局的方向设置为垂直方向。

0

在垂直父布局中,您必须在子元素中使用layout_weight属性。因此,在这种情况下,您已经告诉父元素要应用多少高度到子元素。

因此,在子元素中替换

android:layout_height="wrap_content"

使用

android:layout_height="0dp"

然而,这只是一个猜测,你应该发布你的整个布局XML。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接