XML线性布局中的嵌套权重

时间:2014-04-25 13:48:12

标签: android xml android-linearlayout android-layout-weight

这是我的布局,我收到警告说"Nested weights are bad for performance" ImageView。我怎样才能避免这种情况以及我做错了什么?

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="@android:color/white">


<LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:orientation="horizontal"
    android:layout_weight="1.50">

    <ImageView 
        android:layout_width="0dp"
        android:layout_height="60dp"
        android:background="@drawable/left_top"
        android:layout_weight=".75"  
        android:contentDescription="@string/title" 
        />
     <ImageView 
        android:layout_width="0dp"
        android:layout_height="60dp"
        android:layout_weight="1.25"
        android:contentDescription="@string/title" 
        />

    <ImageView
        android:layout_width="0dp"
        android:layout_height="60dp"
        android:background="@drawable/right_top" 
        android:layout_weight="0.50"
        android:contentDescription="@string/title"  />

</LinearLayout>


    <ImageView
        android:id="@+id/imagefirstname"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="3"
        android:contentDescription="@string/app_name"
        android:background="@drawable/logo"
        android:scaleType="center"
        android:layout_gravity="center_horizontal" 
        />


        <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:text="@string/welcome_title"
        android:textSize="25sp"
        android:layout_gravity="center"
        android:gravity="center"
         /> 

    <LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:orientation="horizontal"
    android:layout_weight=".75">

    <ImageView 
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:background="@drawable/left_bottom"
        android:layout_weight=".75"
        android:contentDescription="@string/title" 
        />
     <ImageView 
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1.25"
        android:contentDescription="@string/title" 
        />

    <ImageView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:background="@drawable/right_bottom" 
        android:layout_weight="0.50"
        android:contentDescription="@string/title"  />

</LinearLayout>



</LinearLayout>

我可以知道实现目标的正确方法是什么?也许这个问题太基础了,但我找不到合适的解决方案。

请帮帮我。

1 个答案:

答案 0 :(得分:1)

根据Android文档:

  

使用LinearLayout的嵌套实例可能会导致过深   查看层次结构嵌套使用的LinearLayout的几个实例   layout_weight参数可以作为每个孩子特别昂贵   需要测量两次。这一点尤为重要   布局重复膨胀,例如在ListView或中使用时   GridView的。

另外 The performance might improve by flattening the layout—make the layout shallow and wide, rather than narrow and deep.

在另一个内部有LinearLayout个布局权重。相反,您可以使用RelativeLayout代替LinearLayout

阅读docs以获取更多信息。