我已经编写了几个布局文件,其中我使用layout_weight
属性来创建不同视图之间的比率。
在某些时候,我开始收到关于嵌套权重的lint警告。
所以,我想知道为什么嵌套的权重对性能不好,是否有一种更有效的方法来创建视图尺寸之间的恒定比率,可以用于不同的屏幕尺寸,并且不需要通过几个布局文件指定大量的尺寸dpi值(我的意思是,对于不同的屏幕尺寸)。
谢谢!
发布于 2013-08-09 06:25:19
我认为(我可能会为此感到愤怒),但我再次认为我的手机有一个四核处理器,可以与大多数人的家用PC相媲美(如果不是完全摧毁的话)。
我也认为这种硬件功能是手机的未来。
所以我得出了一个结论,只要你不被嵌套迷住了(在MHO中,布局不应该超过4层深,如果是这样,你可能做错了),你的手机可以不太关心是否有重量。
有很多事情你可以做,这些事情会对性能产生更深远的影响,然后担心你的处理器会做一些额外的数学运算。
(请注意,我是有点幽默的,所以不要太认真地对待这篇文章中的任何东西,除了你应该首先优化其他东西的想法,担心2-3级的深度体重对你的健康没有帮助)
发布于 2012-02-24 20:52:41
嵌套权重不好的主要原因是,当一个布局有一个权重的子级时,它必须测量两次(我想这在lint-warning中提到过)。这意味着,也包含加权布局的加权布局必须测量四次,并且您添加的每个权重“层”都会以2的幂增加度量。
在ICS (API14级)中添加了GridLayout
,它可以为许多以前需要权重的布局提供简单和“扁平”的解决方案。如果你是为早期版本的Android进行开发,你会有一个稍微困难的时间来移除权重,但是使用RelativeLayout
并将尽可能多的布局展平到驾驶室中通常会移除很多嵌套的权重。
发布于 2019-03-26 04:46:32
有一个简单的解决方案来避免带有权重的嵌套LinearLayouts -只需使用带有weighSum的Tablelayout和带有weightSum的嵌套LinearLayout - Tablelayout具有与LinearLayout相同的属性(orientation,weightSum,layout_weight等)。并且不显示消息-“嵌套的权重对性能不好”
示例:
<TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1">
<ImageView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.8"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.2"
android:orientation="horizontal"
android:weightSum="1">
<ImageView
android:layout_height="match_parent"
android:layout_width="0dp"
android:layout_weight="0.4"/>
<TextView
android:layout_height="match_parent"
android:layout_width="0dp"
android:layout_weight="0.6"/>
</LinearLayout>
</TableLayout>
https://stackoverflow.com/questions/9430764
复制相似问题