Maison  >  Article  >  Java  >  Comment puis-je envelopper des widgets sur plusieurs lignes sous Android ?

Comment puis-je envelopper des widgets sur plusieurs lignes sous Android ?

DDD
DDDoriginal
2024-11-11 17:42:03394parcourir

How Can I Wrap Widgets to Multiple Lines in Android?

Disposition de widget de saut de ligne pour Android : une mise en page personnalisée pour emballer les widgets

Problème :

Cette question répond au besoin d'une mise en page qui affiche une séquence de widgets dans un format enveloppé, similaire à la façon dont le texte est présenté sur un écran. L'espace horizontal disponible est insuffisant pour accueillir tous les widgets sur une seule ligne, la mise en page doit donc envelopper ces "phrases" à la ligne suivante.

Solution :

Le le code fourni démontre la création d'une mise en page personnalisée appelée "PredicateLayout" qui répond à cette exigence :

public class PredicateLayout extends ViewGroup {...}

Cette mise en page organise efficacement les widgets enfants de la même manière que le texte, en les affichant une ligne à la fois et en les enveloppant de manière transparente aux lignes suivantes si nécessaire.

Points forts de la mise en œuvre :

La mise en œuvre implique de remplacer les méthodes suivantes pour définir le comportement de la mise en page :

  • onMeasure calcule les dimensions de la mise en page et de ses enfants en fonction de la largeur et de la hauteur disponibles.
  • generateDefaultLayoutParams établit les paramètres de mise en page par défaut pour les widgets enfants.
  • checkLayoutParams garantit que les paramètres des widgets enfants sont compatibles avec la mise en page. .
  • onLayout positionne les widgets enfants dans la mise en page en fonction de leurs dimensions mesurées et de l'espace disponible.

Résultat :

Le PredicateLayout personnalisé résout le problème en permettant aux widgets d'être disposés de manière à sauter la ligne, de la même manière que le texte est affiché. La disposition résultante ressemble visuellement au comportement souhaité des widgets encapsulés :

[Hello] [Hello] [Hello] [Hello] [Hello]
[Hello] [Hello] [Hello] [Hello]

Informations supplémentaires :

Cette solution est une preuve de concept et peut bénéficier d'améliorations supplémentaires. Les commentaires et suggestions sont les bienvenus. La mise en page XML et le code de PredicateLayout sont fournis pour une implémentation facile.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn