0
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="60dip"
    android:orientation="horizontal"
    android:background="#80939393"
    android:gravity="center_vertical"
     >

    <CheckBox
        android:id="@+id/column1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="0" />


    <View android:layout_height="fill_parent"
    android:layout_width="1dp"
    android:background="#90909090"/>


    <TextView
        android:id="@+id/column2"
        android:layout_width="30dip"
        android:layout_height="wrap_content"
        android:layout_weight="0"
        android:gravity="center"
        android:text="@string/column_title_2" />

    <View android:layout_height="fill_parent"
    android:layout_width="1dp"
    android:background="#90909090"/>

    <LinearLayout
        android:layout_width="70dip"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:layout_weight="1"
        android:clickable="true"
        android:gravity="center_vertical"
        android:id="@+id/column3_container" >
        <TextView
            android:id="@+id/column3"
            android:layout_width="50dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="left"
            android:paddingLeft="8dp"
            android:text="@string/column_title_3" />
        <TextView
            android:id="@+id/sort_column_3"
            android:layout_width="20dip"
            android:layout_height="wrap_content"
            android:layout_weight="0"
            android:gravity="center"
            android:textSize="24dp"
            android:paddingRight="8dp"
            android:text="@string/solid_up" />
    </LinearLayout>


    <View android:layout_height="fill_parent"
    android:layout_width="1dp"
    android:background="#90909090"/>


    <LinearLayout
        android:layout_width="70dip"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:layout_weight="1"
        android:clickable="true"
        android:gravity="center_vertical"
        android:id="@+id/column4_container" >
        <TextView
            android:id="@+id/column4"
            android:layout_width="50dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="left"
            android:paddingLeft="8dp"
            android:text="@string/column_title_4" />
        <TextView
            android:id="@+id/sort_column_4"
            android:layout_width="20dip"
            android:layout_height="wrap_content"
            android:layout_weight="0"
            android:gravity="center"
            android:textSize="24dp"
            android:paddingRight="8dp"
            android:text="" />
    </LinearLayout>


    <View android:layout_height="fill_parent"
    android:layout_width="1dp"
    android:background="#90909090"/>


    <LinearLayout
        android:layout_width="70dip"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:layout_weight="1"
        android:clickable="true"
        android:gravity="center_vertical"
        android:id="@+id/column5_container" >
        <TextView
            android:id="@+id/column5"
            android:layout_width="50dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="left"
            android:paddingLeft="8dp"
            android:text="@string/column_title_5" />
        <TextView
            android:id="@+id/sort_column_5"
            android:layout_width="20dip"
            android:layout_height="wrap_content"
            android:layout_weight="0"
            android:gravity="center"
            android:textSize="24dp"
            android:paddingRight="8dp"
            android:text="" />
    </LinearLayout>


    <View android:layout_height="fill_parent"
    android:layout_width="1dp"
    android:background="#90909090"/>


    <TextView
        android:id="@+id/column6"
        android:layout_width="50dip"
        android:layout_height="wrap_content"
        android:layout_weight="0"
        android:gravity="center"
        android:text="@string/column_title_6" />

</LinearLayout>
    <View android:layout_height="1dp"
    android:layout_width="fill_parent"
    android:background="#90909090"/>
    <ListView
        android:id="@+id/mylist"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:choiceMode="multipleChoice">
    </ListView>
    <View android:layout_height="1dp"
    android:layout_width="fill_parent"
    android:background="#90909090"/>

</LinearLayout>

我在日食中收到两个关于性能的警告。

Nested weights are bad for performance使用时android:layout_weight="1" Use a layout_width of 0dip instead of 50dip for better performance

谁能告诉我为什么它会抛出这个错误?

4

2 回答 2

2

我理解它的方式是这样的:因为你正在使用layout_weightthat is superseding layout_width。所以本质上layout_width被忽略了。但从技术上讲,它并没有被完全忽略,而是系统正在应用layout_width="50dp",然后返回并进行数学运算以应用layout_weight="1",因此它做了两倍的工作。它告诉您使用 0dp 以避免做(不必要的)工作。

编辑

你的第二个问题Nested weights are bad for performance是因为你有一个重量,LinearLayout并且重量在TextView里面因此LinearLayout它们是“嵌套的”。该警告告诉您以这种方式设置布局可能不利于性能。理想的解决方法可能是想出一些方法来完成你想要使用的外观,RelativeLayout而不是使用重量。但实际上,除非你特别注意到或听到关于表现不佳的报告,否则你可能会离开它。

于 2013-04-02T14:23:13.523 回答
1

当您使用该weight属性时,它会根据 的值计算该视图的宽度weight。如果不将视图的宽度设置为0dp,它会重新计算宽度,这是不必要的。所以如果你使用 weight, 然后 width 到 0dp 它只需要计算一次大小。


对于嵌套重量警告

android:layout_width="70dip"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_weight="1"

在此线性布局中删除 weight 属性

于 2013-04-02T14:22:04.920 回答