我收到警告:"Nested weights are bad for performance"
。我确实从另一个布局中复制了这个代码,但是在这一个中它给出了一个错误而在另一个布局中却没有。
<?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" >
<ListView
android:id="@+id/listWeighings_weighing"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginBottom="5dp"
android:layout_weight="1"
android:background="#000000" >
</ListView>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/btnInsertMutation_weighing"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="50"
android:text="Mutatie invoeren" />
<Button
android:id="@+id/btnExecuteWeighing_weighing"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="50"
android:text="weging uitvoeren" />
</LinearLayout>
</LinearLayout>
我敢打赌这是一个愚蠢的错误,但有人可以指出我做错了吗?
答案 0 :(得分:7)
您必须将weightSum添加到linearlayout并删除listview的权重:
<?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" >
<ListView
android:id="@+id/listWeighings_weighing"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginBottom="5dp"
android:background="#000000" >
</ListView>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="100" >
<Button
android:id="@+id/btnInsertMutation_weighing"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="50"
android:text="Mutatie invoeren" />
<Button
android:id="@+id/btnExecuteWeighing_weighing"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="50"
android:text="weging uitvoeren" />
</LinearLayout>
</LinearLayout>
答案 1 :(得分:4)
要记住的三件事:
将孩子的android:layout_width设置为“0dp”
设置父级的android:weightSum
答案 2 :(得分:1)
<LinearLayout
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="@color/black"
android:orientation="horizontal"
tools:ignore="NestedWeights" >
添加此行以忽略降低布局性能的嵌套权重问题。
答案 3 :(得分:1)
如果其他人希望忽略NestedWeights,请记住您还必须在标题中指定工具。例如
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/appDarkBackGround"
android:orientation="horizontal"
tools:context=".MainActivity"
tools:ignore="NestedWeights"
>