studio layout_below español elementos ejemplo constraintlayout constraint amontonados android listview android-lint

layout_below - relativelayout android studio español



¿Cómo la configuración de línea base Alineado a falso mejora el rendimiento en LinearLayout? (3)

Estaba creando una interfaz de usuario en xml, y Lint me dio una advertencia y me dijo que configurara android: baselineAligned a falso para mejorar el rendimiento en ListView.

Los documentos para los cambios de pelusa que agregaron esta advertencia dicen

Rendimiento de diseño: busca LinearLayouts con pesos donde debe configurar android: baselineAligned = "false" para un mejor rendimiento, y también encuentra casos en los que tiene pesos anidados que pueden causar problemas de rendimiento.

¿Alguien puede explicar por qué esto mejora el rendimiento, específicamente cuando se trata de peso?


cómo android:baselineAligned="false" ayuda. Puede que no sea la respuesta pero que ayude a conseguir un concepto.

Acabo de conseguir 3 elementos (icono, texto, botón) centrados verticalmente en LinearLayout horizontal.

Esto puede parecer simple, pero en realidad especificando android: gravity = "center_vertical" ya que el atributo LinearLayout no es suficiente - el ícono está centrado, pero el texto y el botón no lo están. Esto se debe a que (presumiblemente) el texto tiene una línea de base, y el algoritmo de centrado lo usa en lugar del centro vertical "real". Pero lo que es peor: ¡el botón (que aparece junto al texto) se centra en la línea de base del texto!

Especificar android: baselineAligned = "false" en LinearLayout lo desactiva, y todo se centra correctamente.


Al configurar android:baselineAligned="false" , está evitando el trabajo adicional que tiene que hacer el diseño de su aplicación para alinear las líneas de base de sus hijos; Lo que obviamente puede aumentar el rendimiento. (Menos operaciones innecesarias en UI => Mejor rendimiento)


// 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