Comment paramètre baselineAligned false améliorer les performances dans LinearLayout?

StackOverflow https://stackoverflow.com/questions/9319916

  •  26-10-2019
  •  | 
  •  

Question

Je construisais quelques-unes interface utilisateur dans xml, et Lint m'a donné un avertissement et dit ensemble android:. BaselineAligned false pour améliorer les performances dans ListView

Les documents pour la charpie des changements qui ont ajouté ce mot d'avertissement

La performance Mise en page: Trouve LinearLayouts avec des poids où vous devriez jeu Android: baselineAligned = pour une meilleure performance "false", et aussi trouve des cas où vous avez des poids imbriqués qui peuvent causer des performances problèmes.

Quelqu'un peut-il expliquer pourquoi cela améliore les performances, en particulier quand le poids est impliqué?

Était-ce utile?

La solution

En définissant android:baselineAligned="false", vous empêchez le travail supplémentaire de mise en page de votre application doit faire afin d'aligner les lignes de base de ses enfants; qui ne peut évidemment augmenter les performances. (Moins d'opérations inutiles sur l'interface utilisateur => Meilleure performance)

Autres conseils

comment aider android:baselineAligned="false". Il ne peut pas être la réponse, mais aide pour obtenir concept.

Je viens réussi à obtenir 3 points (icône, texte, bouton) centré verticalement dans LinearLayout horizontal.

Cela peut sembler simple, mais en réalité spécifiant android: gravité = « center_vertical » comme attribut LinearLayout n'est pas assez - l'icône est centrée, mais le texte et le bouton ne sont pas. C'est car le texte (probablement) une ligne de base et de l'algorithme de centrage utilise au lieu du centre vertical « réel ». Mais ce qui est pire - bouton (Qui vient ensuite au texte) est centrée à l'aide de la ligne de base de texte!

android Spécification: baselineAligned = "false" dans LinearLayout se présente au large, et tout correctement les centres.

// 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 / applications / platform_frameworks_base / blob / maître / core / java / applications / widget / LinearLayout.java # L1093

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top