<?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
有谁能说我为什么抛出这个错误?
答案 0 :(得分:2)
我理解的方式是这样的:
由于您使用的是取代layout_weight
的{{1}}。所以基本上layout_width
被忽略了。但技术上并没有一直被忽略,而是系统正在应用layout_width
,然后返回并进行数学运算以应用layout_width="50dp"
,这样它就可以完成两倍的工作。它告诉你使用0dp以避免做(不必要的)工作。
修改强>
您的第二个问题layout_weight="1"
是因为您Nested weights are bad for performance
的权重和LinearLayout
的权重 里面的TextView
LinearLayout
因此它们是“嵌套的”。警告告诉您以这种方式设置布局可能对性能不利。理想的修复方法可能是使用RelativeLayout
来完成你想要的外观并且根本不使用重量。但实际上,除非你特别注意或听到性能不佳的报告,否则你可以放弃它。
答案 1 :(得分:1)
使用weight
属性时,它会根据weight
的值计算该视图的宽度。如果未将视图宽度设置为0dp,则会再次计算宽度,这是不必要的。因此,如果您使用weight
,然后将宽度设置为0dp,则只需计算一次大小。
对于嵌套重量警告
android:layout_width="70dip"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_weight="1"
删除此linearlayout
中的权重属性