web-dev-qa-db-fra.com

Texte au centre Android

Ma question est très simple. Comment centrer le texte sur un bouton dans Android? J'ai essayé de mettre le rembourrage à 0, la gravité au centre mais le résultat quand je l'exécute toujours est que le texte est centré horizontalement mais pas verticalement. Le texte est un peu décalé vers le bas.

<Button
    Android:id="@+id/btnSame"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_gravity="center"
    Android:layout_marginBottom="10dip"
    Android:layout_marginLeft="10dip"
    Android:layout_marginRight="10dip"
    Android:background="@drawable/layout_button_different"
    Android:gravity="center_vertical|center_horizontal"
    Android:height="30dp"
    Android:padding="0dip"
    Android:text="@string/equals"
    Android:textColor="@drawable/layout_button_different"
    Android:textSize="50dp"
    Android:width="70dp" />

Mon être aussi pertinent: Dans l'activité, je fais ceci:

btnEquals.setCompoundDrawablesWithIntrinsicBounds(null,getResources().getDrawable(R.drawable.up2), null, null);
btnEquals.setPadding(0, 5, 0, 0);
btnEquals.setTextSize(15);

Cela fonctionne, mais après cela, j'ai défini ceci:

btnEquals.setCompoundDrawables(null, null, null, null);
btnEquals.setPadding(0, 0, 0, 0);

Le résultat est un mauvais alignement vertical.

24
dieters

Votre mise en page existante ne peut pas espérer centrer le texte en raison des tailles que vous avez sélectionnées. Vous avez défini la hauteur du bouton sur 30dp et votre textSize est 50dp, et pour une raison quelconque, Android ne peut pas gérer cela et centrer le texte. Si vous agrandissez votre bouton ou réduisez votre texte, vous verrez que le centrage fonctionne.

18
mah

C'est très simple, vous pouvez mettre ceci:

Android:textAlignment="center"
38
Cabezas

Il y a trois systèmes à considérer. Le concepteur de mise en page xml, le simulateur et le vrai téléphone. Le texte du bouton si vous spécifiez gravity = "center" ressemblera à ceci. Dans le concepteur de mise en page XML, il semblera que la lettre la plus à gauche se trouve au centre du bouton, mais les autres lettres sont à droite. (semble incorrect) Dans le simulateur, le texte apparaît bien au centre. (correct) Dans le téléphone, le texte apparaît bien au centre. (correct)

1
user2712329

Vous pouvez également utiliser des nombres négatifs dans setPadding. Cela peut être utile si votre police est grande et que votre bouton est petit. Essayez également de définir le haut ou le bas sur un nombre plus négatif s'il est toujours décentré.

0
uowaep