2012-06-11 18 views
18

Meine Frage ist sehr einfach. Wie zentriere ich den Text auf einer Schaltfläche in Android? Ich habe versucht, Padding auf 0, Schwerkraft zu zentrieren, aber das Ergebnis, wenn ich es immer noch, dass der Text horizontal zentriert, aber nicht vertikal ist. Der Text ist ein bisschen nach unten verschoben.Center Text Android Knopf

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

Mein auch relevant sein: In Tätigkeit Ich tue dies:

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

Dies funktioniert aber danach Ich habe dies:

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

Ergebnis ist eine schlechte vertikale Ausrichtung.

Antwort

12

Ihr vorhandenes Layout kann den Text aufgrund der von Ihnen ausgewählten Größen nicht zentrieren. Sie haben die Tastenhöhe auf 30dp eingestellt und Ihre Textgröße ist 50dp, und aus irgendeinem Grund ist Android nicht in der Lage, damit umzugehen und den Text zu zentrieren. Wenn Sie Ihre Schaltfläche vergrößern oder Ihren Text verkleinern, sehen Sie, dass die Zentrierung funktioniert.

+0

wenn Höhe ist 30DP was ist dann die Verwendung von 'android: layout_height = "wrap_content" '? –

+0

@hotveryspicy - Setzen Sie das Layout der Schaltfläche in ein XML und laden Sie es, und Sie werden sehen, dass der 'wrap_content' in diesem Fall nicht auf die Verschüttung des Textes achtet. Ich weiß nicht, warum das passiert, aber es ist, was passiert (zumindest wenn man es über die Eclipse-Anzeige des Layouts betrachtet; ich habe es nicht auf ein Gerät gelegt). – mah

+0

Danke aber das Löschen von android: layout_height oder android: layout_width wird in einer RuntimeException aufgelöst. – dieters

-1
<Button 
       android:id="@+id/AnswerE" 
       style="@style/defaultbuttonstyle" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:gravity="center" 
       android:onClick="AnswerCheck" 
       android:text=" E " 
       android:textStyle="bold" /> 

Dieser arbeitete für mich

0

Sie auch negative Zahlen in setPadding verwenden können. Dies kann hilfreich sein, wenn Ihre Schriftart groß und Ihre Schaltfläche klein ist. Versuchen Sie auch, die Ober- oder Unterseite auf eine negativere Zahl zu setzen, wenn sie sich immer noch außerhalb der Mitte befindet.

1

Es gibt drei Systeme zu berücksichtigen. Der XML-Layout-Designer, der Simulator und das echte Telefon. Der Text in der Schaltfläche, wenn Sie gravity = "center" angeben, sieht so aus. Im XML-Layout-Designer sieht es so aus, als ob der linke Buchstabe in der Mitte der Schaltfläche liegt, der Rest der Buchstaben jedoch rechts. (sieht falsch aus) Im Simulator zeigt sich der Text gut in der Mitte. (Korrekt) Im Telefon zeigt sich der Text gut in der Mitte. (Korrekt)

+0

Dank für diese Antwort verbrachte ich 15 Minuten damit, mich zu wundern, was ich falsch gemacht habe und es stellt sich heraus, dass es einfach 'falsch aussieht' –

24

Es ist sehr einfach, Sie setzen diese:

android:textAlignment="gravity" 

Diese Arbeit, wenn Sie dies:

android:gravity="center"