我只是在xml中构建一些UI,Lint给了我一个警告,并说将android:baselineAligned设置为false以提高ListView的性能。
Lint更改的文档添加了此警告,说
布局性能:查找具有权重的LinearLayouts,应在其中设置android:baselineAligned =“ false”以获得更好的性能,并查找嵌套权重会导致性能问题的情况。
有人可以解释为什么这样做可以改善性能,特别是在涉及体重时?
我只是在xml中构建一些UI,Lint给了我一个警告,并说将android:baselineAligned设置为false以提高ListView的性能。
Lint更改的文档添加了此警告,说
布局性能:查找具有权重的LinearLayouts,应在其中设置android:baselineAligned =“ false”以获得更好的性能,并查找嵌套权重会导致性能问题的情况。
有人可以解释为什么这样做可以改善性能,特别是在涉及体重时?
Answers:
通过设置android:baselineAligned="false"
,您可以避免应用程序的布局为对齐子级基线而要做的额外工作;可以明显提高性能。(在UI上减少了不必要的操作=>更好的性能)
有什么android:baselineAligned="false"
帮助。这可能不是答案,但有助于获得概念。
我刚刚设法在水平LinearLayout中垂直居中放置了3个项目(图标,文本,按钮)。
这看似简单,但实际上将android:gravity =“ center_vertical”指定为LinearLayout属性是不够的-图标居中,但文本和按钮不足。这是因为(大概)文本具有基线,并且居中算法使用它而不是“实际”垂直居中。但是,更糟糕的是-按钮(位于文本旁边)使用文本的基线居中!
在LinearLayout中指定android:baselineAligned =“ false”可以将其关闭,并且所有内容均可正确居中。
// 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);
}