我是android新手。现在我收到了嵌套重量不良表现的警告。我的第一个屏幕上只有一个图像和三个按钮。 PLs给了我一些想法。
<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:background="@color/backgroundColor"
android:orientation="vertical"
android:gravity="center_horizontal"
android:weightSum="10"
>
<ImageView
android:layout_weight="4"
android:id="@+id/imageLogo"
android:layout_width="wrap_content"
android:layout_height="0dip"
android:contentDescription="@string/Img"
android:layout_marginLeft="10dp"
android:layout_marginTop="20dp"
android:src="@drawable/home_screen_logo" />
<LinearLayout
android:layout_weight="6"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:orientation="vertical"
android:gravity="center_horizontal"
>
<LinearLayout android:layout_height="0dp" android:layout_width="fill_parent"
android:layout_weight="1"
android:id="@+id/temp"></LinearLayout>
<ImageButton
android:id="@+id/btnLogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/login"
android:contentDescription="@string/Img"
android:layout_weight="1"
/>
<LinearLayout android:layout_height="0dp" android:layout_width="fill_parent"
android:layout_weight="1"></LinearLayout>
<ImageButton
android:id="@+id/btnFbLogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/btnfb"
android:contentDescription="@string/Img"
/>
<LinearLayout android:layout_height="0dp" android:layout_width="fill_parent"
android:layout_weight="1"></LinearLayout>
<ImageButton
android:id="@+id/btnRegister"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/btnregister"
android:contentDescription="@string/Img"/>
</LinearLayout>
</LinearLayout>
在此先感谢
答案 0 :(得分:6)
礼貌:Why are nested weights bad for performance? Alternatives?嵌套权重对性能不利,因为:
布局权重需要测量窗口小部件两次。当具有非零权重的LinearLayout嵌套在具有非零权重的另一个LinearLayout内时,则测量数量呈指数增长。
最好使用
RelativeLayouts
并根据其他视图的位置调整视图,而不使用特定的dpi值。
答案 1 :(得分:0)
嵌套权重对性能不利,因为:
布局权重需要测量窗口小部件两次。当一个 具有非零权重的LinearLayout嵌套在另一个内 LinearLayout具有非零权重,然后是测量次数 以指数方式增长。
最好使用RelativeLayout并根据其他视图的位置调整视图,而不使用特定的dpi值。
参考:http://developer.android.com/resources/articles/layout-tricks-efficiency.html
在大多数情况下,您可以使用RelativeLayout来避免这种昂贵的测量。在RelativeLayout中,视图与其父级,RelativeLayout本身或其他视图对齐。
为了清楚地了解视图相对于彼此的位置,可以使用Android SDK的HierarchyViewer透视图捕获布局的线框。
答案 2 :(得分:0)
尝试从线性布局中删除android:weightSum="10"
,同时删除android:layout_weight="1"
现在你看到警告消失了!
确保保持按钮中的权重以及线性布局中的其他内容!
我希望这可以解决你的问题:)