首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么嵌套的权重对性能不好?替代方案?

为什么嵌套的权重对性能不好?替代方案?
EN

Stack Overflow用户
提问于 2012-02-24 20:26:47
回答 4查看 83.5K关注 0票数 166

我已经编写了几个布局文件,其中我使用layout_weight属性来创建不同视图之间的比率。

在某些时候,我开始收到关于嵌套权重的lint警告。

所以,我想知道为什么嵌套的权重对性能不好,是否有一种更有效的方法来创建视图尺寸之间的恒定比率,可以用于不同的屏幕尺寸,并且不需要通过几个布局文件指定大量的尺寸dpi值(我的意思是,对于不同的屏幕尺寸)。

谢谢!

EN

回答 4

Stack Overflow用户

发布于 2013-08-09 06:25:19

我认为(我可能会为此感到愤怒),但我再次认为我的手机有一个四核处理器,可以与大多数人的家用PC相媲美(如果不是完全摧毁的话)。

我也认为这种硬件功能是手机的未来。

所以我得出了一个结论,只要你不被嵌套迷住了(在MHO中,布局不应该超过4层深,如果是这样,你可能做错了),你的手机可以不太关心是否有重量。

有很多事情你可以做,这些事情会对性能产生更深远的影响,然后担心你的处理器会做一些额外的数学运算。

(请注意,我是有点幽默的,所以不要太认真地对待这篇文章中的任何东西,除了你应该首先优化其他东西的想法,担心2-3级的深度体重对你的健康没有帮助)

票数 49
EN

Stack Overflow用户

发布于 2012-02-24 20:52:41

嵌套权重不好的主要原因是,当一个布局有一个权重的子级时,它必须测量两次(我想这在lint-warning中提到过)。这意味着,也包含加权布局的加权布局必须测量四次,并且您添加的每个权重“层”都会以2的幂增加度量。

在ICS (API14级)中添加了GridLayout,它可以为许多以前需要权重的布局提供简单和“扁平”的解决方案。如果你是为早期版本的Android进行开发,你会有一个稍微困难的时间来移除权重,但是使用RelativeLayout并将尽可能多的布局展平到驾驶室中通常会移除很多嵌套的权重。

票数 11
EN

Stack Overflow用户

发布于 2019-03-26 04:46:32

有一个简单的解决方案来避免带有权重的嵌套LinearLayouts -只需使用带有weighSum的Tablelayout和带有weightSum的嵌套LinearLayout - Tablelayout具有与LinearLayout相同的属性(orientation,weightSum,layout_weight等)。并且不显示消息-“嵌套的权重对性能不好”

示例:

代码语言:javascript
复制
 <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>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9430764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档