嵌套权重对性能不利

时间:2012-05-23 19:41:15

标签: android android-layout

这是我的布局,我正在为底部的2个按钮收到此消息,即使我已经为布局中的另一个小部件设置了权重,这不是按钮的父级(messageText小部件) 。我究竟做错了什么?感谢。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
<LinearLayout
    android:orientation="horizontal"
    android:layout_marginTop="10dip"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <TextView  
        android:layout_marginLeft="10dip"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="@string/status_label"
        android:textStyle="bold"
        android:textSize="20dip"
        android:textColor="#FEFF80"/>
    <TextView  
        android:id="@+id/statusText"
        android:layout_marginLeft="10dip"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="@string/unsent"
        android:textSize="20dip"
        android:textColor="#FEFF80"/>
</LinearLayout>
<TextView
    android:layout_width="fill_parent"
    android:layout_marginTop="10dip"
    android:layout_height="1dip"
    android:background="#FEFF80"/>
<TextView  
    android:layout_marginTop="10dip"
    android:layout_marginLeft="11dip"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/message_number_caption"
    android:textSize="15dip"/>
<EditText
    android:id="@+id/messageNumber"
    android:inputType="phone"
    android:layout_marginTop="10dip"
    android:layout_marginLeft="10dip"
    android:layout_marginRight="10dip"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"/>
<TextView  
    android:layout_marginTop="30dip"
    android:layout_marginLeft="11dip"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/message_text_caption"
    android:textSize="15dip"/>
<EditText android:inputType="text"
    android:id="@+id/messageText"
    android:layout_marginTop="10dip"
    android:layout_marginLeft="10dip"
    android:layout_marginRight="10dip"
    android:layout_weight="1.0"
    android:layout_width="fill_parent" 
    android:layout_height="0dip"/>
<LinearLayout
    android:orientation="horizontal"
    android:layout_marginTop="10dip"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <Button
        android:id="@+id/sendButton"
        android:layout_marginLeft="10dip"
        android:layout_marginRight="10dip"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="0.5" 
        android:text="@string/send_button_label"
        android:textSize="15dip"/>
    <Button
        android:id="@+id/resetButton"
        android:layout_marginLeft="10dip"
        android:layout_marginRight="10dip"
        android:layout_width="0dip" 
        android:layout_height="wrap_content" 
        android:layout_weight="0.5"
        android:text="@string/reset_button_label"
        android:textSize="15dip"/>
</LinearLayout>
</LinearLayout>

2 个答案:

答案 0 :(得分:3)

你没有做错什么,只是一个警告。 Android视图引擎解释您的XML并构建视图对象。谷歌已经决定在布局中嵌套权重(即带有android:layout_weight属性的视图),在另一个布局中导致视图引擎表现不佳,并建议你不要这样做。

如果有另一种方法来实现您正在构建的布局而不使用andorid:layout_weight属性,那么最好这样做。否则,您的视图可能会缓慢加载。

答案 1 :(得分:2)

你已经指定了一个权重为1的编辑文本(@ + id / messageText) - 你的意思是这样做,因为该线性布局中的其他小部件没有权重吗?

然后在下面你有一个线性布局,有两个合法使用重量的按钮。

N.B。这是一个非常简单的布局,所以你可能很好。如果您有更多的布局和小部件的层次结构,那么您将更有可能看到减速。