我刚刚在xml中构建了一些UI,Lint给了我一个警告,并说要设置android:baselineAligned为false以提高ListView的性能。
添加此警告的Lint更改的文档说
布局性能:使用您应该的权重查找LinearLayouts 设置android:baselineAligned =“false”以获得更好的性能,以及 查找具有可导致性能的嵌套权重的情况 问题。
有人可以解释为什么这会改善表现,特别是涉及体重时?
答案 0 :(得分:153)
通过设置android:baselineAligned="false"
,您可以阻止应用布局必须执行的额外工作,以便对齐其子级的基线;这显然可以提高性能。 (在UI上执行不必要的操作=>更好的性能)
答案 1 :(得分:19)
android:baselineAligned="false"
如何提供帮助。它可能不是答案,但有助于获得概念。
我只是设法让3个项目(图标,文字,按钮)居中 垂直在水平LinearLayout。
这看起来很简单,但实际上却指明了 机器人:比重=" center_vertical"因为LinearLayout属性不是 足够 - 图标居中,但文字和按钮不居中。这是 因为(推测)文本有基线和居中算法 使用它而不是真实的'垂直中心。但更糟糕的是 - 按钮 (文本旁边)使用文本的基线进行居中!
指定android:baselineAligned =" false"在LinearLayout转为此 关闭,一切正确。
答案 2 :(得分:14)
// 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);
}