2013-04-02 3 views
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> 

Я получаю два предупреждения в своем затмении за производительность.layout_width и layout_weight - performance

Nested weights are bad for performance при использовании android:layout_weight="1"иUse a layout_width of 0dip instead of 50dip for better performance

Может кто-нибудь сказать мне, почему его бросать эту ошибку?

ответ

2

То, как я понимаю это так: Поскольку вы используете layout_weight, что заменяющий layout_width. Поэтому по существу layout_width игнорируется. Но это технически не полностью игнорируется, вместо этого система применяет layout_width="50dp", а затем возвращается и делает математику для применения layout_weight="1", поэтому она делает в два раза больше работы. Он говорит вам использовать 0dp, чтобы вы не выполняли (ненужную) работу.

EDIT

Ваш второй вопрос Nested weights are bad for performance потому, что у вас есть вес на вашем LinearLayout и вес на TextView, который внутри что LinearLayout поэтому они «вложены». Предупреждение говорит вам, что настройка макета таким образом может быть плохим для производительности. Идеальное исправление, вероятно, должно было бы решить какой-то способ выполнить нужный вам вид, используя RelativeLayout и не используя вес вообще. Но на самом деле, если вы специально не заметили или не услышали сообщения о плохом качестве работы, вы, вероятно, можете оставить его.

1

Когда вы используете атрибут weight, он вычисляет ширину для этого представления в зависимости от значения для weight. Если вы не устанавливаете ширину представления в 0dp, он снова вычисляет ширину, что необязательно. Поэтому, если вы используете weight, а затем ширину до 0dp, он должен только вычислить размер один раз.


Для вложенной вес предупреждения

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

удалить вес атрибут здесь, в этом LinearLayout

+0

Можете ли вы изменить код TextView на то, каким он должен быть на самом деле. – Kevin

+0

Просто измените 50dip на 0dip в 'layout_width' –

+0

Я сделал это, но его показ« Вложенные веса плохи для производительности » – Kevin

Смежные вопросы