How does setting baselineAligned to false improve performance in LinearLayout?

后端 未结 3 901
青春惊慌失措
青春惊慌失措 2020-12-22 19:22

I was just building some UI in xml, and Lint gave me a warning and said to set android:baselineAligned to false to improve performance in ListView.

The docs for the

相关标签:
3条回答
  • 2020-12-22 19:56

    By setting android:baselineAligned="false" , you're preventing the extra work your app's layout has to do in order to Align its children's baselines; which can obviously increase the performance. (Fewer unnecessary operations on UI => Better performance)

    0 讨论(0)
  • 2020-12-22 19:57
    // 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);
                    }
    

    https://github.com/android/platform_frameworks_base/blob/master/core/java/android/widget/LinearLayout.java#L1093

    0 讨论(0)
  • 2020-12-22 20:17

    how android:baselineAligned="false" help . It may not be the answer but help to get concept.

    I've just managed to get 3 items (icon, text, button) centered vertically in horizontal LinearLayout.

    This may seem simple, but in reality specifying android:gravity="center_vertical" as LinearLayout attribute is not enough - icon is centered, but text and button are not. This is because (presumably) text have a baseline, and centering algorithm uses it instead of 'real' vertical center. But what is worse - button (which comes next to text) is centered using text's baseline!

    Specifying android:baselineAligned="false" in LinearLayout turns this off, and everything centers correctly.

    0 讨论(0)
提交回复
热议问题