如何将baselineAligned设置为false来提高LinearLayout的性能?
我只是在xml中创build了一些UI,而Lint给了我一个警告,并说要设置android:baselineAligned为false来提高ListView的性能。
添加此警告的Lint更改的文档说
布局性能:查找带有权重的LinearLayouts,您应该在其中设置android:baselineAligned =“false”以获得更好的性能,并且还会发现嵌套权重可能导致性能问题的情况。
有人可以解释为什么这会提高性能,特别是当涉及重量?
通过设置android:baselineAligned="false"
,您可以防止您的应用程序的布局需要做额外的工作,以便使其子基线alignment; 这可以明显提高性能。 (在UI上更less的不必要的操作=>更好的性能)
如何android:baselineAligned="false"
帮助。 这可能不是答案,但有助于获得概念。
我刚刚设法得到3个项目(图标,文本,button)垂直居中水平LinearLayout。
这可能看起来很简单,但实际上指定android:gravity =“center_vertical”作为LinearLayout属性是不够的 – 图标居中,但文本和button不是。 这是因为(大概)文本有一个基准,并且居中algorithm使用它而不是“真正的”垂直中心。 但更糟糕的是,button(文本旁边)是使用文本的基线居中的!
在LinearLayout中指定android:baselineAligned =“false”将closures此function,并且所有内容都正确居中。
// Baseline alignment requires to measure widgets to obtain the // baseline offset (in particular for TextViews). The following // defeats the optimization mentioned above. Allow the child to // use as much space as it wants because we can shrink things // later (and re-measure). if (baselineAligned) { final int freeSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); child.measure(freeSpec, freeSpec); }
- 为什么当我尝试使用adb shell打开数据库时,在根用户的Nexus One上出现“sqlite3:not found”错误?
- 当AsyncTask.get()调用时,ProgressDialog不显示
- getApplicationContext(),getBaseContext(),getApplication(),getParent()
- 获取android.content.res.Resources $ NotFoundException:即使资源存在于android中也是exception
- 如何获取Android中使用SQLite查询的行数?
- focusable和focusableInTouchMode之间的区别?
- 是否可以更改Android SearchView上的textcolor?
- 如何正确下载图像?
- 两个date之间的Android差异