J'ai une puce avec 100dp de largeur mais le texte n'est pas centré comment je peux centrer le texte.
J'utilise androidx avec la bibliothèque de matériaux, j'ai essayé de mettre android:textAlignment="center"
et android:gravity="center"
mais ne fonctionne pas
<com.google.android.material.chip.Chip android:id="@+id/chip" style="@style/Widget.MaterialComponents.Chip.Choice" android:layout_width="100dp" android:layout_height="wrap_content" android:text="7:00" />
J'ai ceci
Je veux ceci
3 Réponses :
La réponse courte:
Les puces ne sont pas destinées à être utilisées de la manière dont vous essayez de les utiliser. Ils sont censés envelopper votre contenu. Par conséquent, il n'y a pas de moyen propre d'aligner le texte au centre. Il existe une solution de contournement, vous pouvez utiliser les attributs Chip_textEndPadding et Chip_textStartPadding , ce qui sera un peu gênant je suppose.
Je ne sais pas vraiment ce que vous essayez d'accomplir, je veux dire, quel est votre pourquoi? Est-ce un bouton? Est-ce supposé simplement montrer du texte? Veuillez décrire la fonctionnalité, ou au moins une partie de celle-ci.
En tous cas:
Selon les directives de conception des matériaux
Les puces permettent aux utilisateurs de saisir des informations, d'effectuer des sélections, de filtrer le contenu ou de déclencher des actions. Les puces doivent apparaître dynamiquement sous la forme d'un groupe de plusieurs éléments interactifs. Contrairement aux boutons, qui devraient être un appel à l'action cohérent et familier, un appel auquel un utilisateur s'attend à apparaître comme la même action dans la même zone générale.
Votre fonctionnalité a-t-elle quelque chose à voir avec cela?
Si vous souhaitez un composant circulaire cliquable, vous pouvez simplement utiliser lebouton Matériau .
Il y a une question similaire qui a été posée sur github .
tout à l'heure, j'ai rencontré le même problème, et je l'ai résolu en définissant une propriété de puce: android: textAlignment = "center"
. J'ai testé votre exemple et cela fonctionne très bien aussi, voici le code que j'ai testé:
<FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <com.google.android.material.chip.Chip android:id="@+id/chip" style="@style/Widget.MaterialComponents.Chip.Choice" android:layout_width="100dp" android:layout_height="wrap_content" android:text="7:00" android:textAlignment="center"/> </FrameLayout>
Assurez-vous également de ne pas définir ou modifier l'alignement du texte d'une puce quelque part dans votre code.
chip.setTextAlignment (View.TEXT_ALIGNMENT_CENTER); si vous voulez le faire par programme.
Utilisez isTextAlignmentResolved
, par exemple, chipname.isTextAlignmentResolved()
pour effectuer cette opération par programme.
Pouvez-vous s'il vous plaît poster une capture d'écran de ce que vous avez accompli jusqu'à présent?
oui, j'ai mis à jour le post
Je ne pense pas que ce soit possible. En utilisant
android:gravity="center"
vous devriez avoir dans logcatW/Chip: Chip text must be vertically center and start aligned