2013-07-10 4 views
14

Ich versuche, eine TextView in einer LinearLayout zu zentrieren und es ist horizontal, aber nicht vertikal zentriert.Android - Center Textansicht in LinearLayout

unten ist mein Code

<LinearLayout 
     android:orientation="vertical" 
     android:layout_width="320dp" 
     android:layout_height="50dp" 
     android:background="@drawable/rectblack" 
     android:layout_marginTop="10dp" 
     android:layout_gravity="center" 
     android:minWidth="25px" 
     android:minHeight="25px"> 
     <TextView 
      android:text="Explode a Vin" 
      android:gravity="center" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/tvExVin" /> 
    </LinearLayout> 

Am Ende würde Ich mag es auf der linken Seite des Linearlayout vertikal zentriert werden, wenn jemand herausfinden konnte, wie das zu tun, das wäre großartig.

Danke!

+0

entfernen Sie diese beiden Zeilen von Linearlayout android: minWidth = "25px" android: minHeight = "25px" –

Antwort

38

Sie haben die Schwerkraft und layout_gravity umgekehrt. Sie können mehrere Werte für das Gravitationsattribut haben, die durch "|" getrennt sind. Versuchen Sie folgendes:

<LinearLayout 
     android:orientation="vertical" 
     android:layout_width="320dp" 
     android:layout_height="50dp" 
     android:background="@drawable/rectblack" 
     android:layout_marginTop="10dp" 
     android:layout_gravity="center_horizontal" 
     android:gravity="center_vertical|left" 
     android:minWidth="25px" 
     android:minHeight="25px"> 
     <TextView 
      android:text="Explode a Vin" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/tvExVin" /> 
    </LinearLayout> 

Zur Klarstellung:

android:layout_gravity="center_horizontal" das Linearlayouts horizontal in seinem übergeordneten Zentrum.

android:gravity="center_vertical|left" zentriert TextView (und alle anderen untergeordneten Elemente) vertikal innerhalb des LinearLayout und richtet es nach links aus.

+1

und nur um Wissen zu teilen, könnten Sie die 'android: gravity' aus dem linearen Layout entfernen und' android: layout_gravity' in die Textansicht mit dem gleichen "center_vertical | left" -Wert setzen und bekomme das gleiche Ergebnis. – invertigo

+0

würde also setzen 'layout_gravity = center_vertical | left" 'in der Textansicht und entfernen Sie es aus dem linearen Layout haben den gleichen Effekt? – user222786

+0

@ user222786 genau – invertigo

2

Versuchen Sie, Ihre gravity zu

android:layout_gravity="center_vertical" 

gravity verwendet zu ändern, um den Inhalt in Ihrem View und layout_gravity zu positionieren verwendet wird, um die View innerhalb der übergeordneten zu positionieren.

Aber ich bin verwirrt von "Am Ende möchte ich, dass es vertikal auf der linken Seite des Linearlayout zentriert ist". Aber so wie es sich anhört, sollte meine Antwort Ihnen geben, was Sie wollen.

Auch wenn es keinen sehr guten Grund gibt, sollten Sie kein LinearLayout oder irgendein Elternteil für ein einzelnes Kind verwenden müssen. Wenn Sie eine bessere Erklärung geben können, was Sie wollen, oder sogar einen Screenshot, können wir Ihnen vielleicht mit einer besseren Lösung helfen.

Dies wird Ihnen die gewünschte Wirkung

<LinearLayout 
    android:layout_width="320dp"  <!-- removed orientation (horizontal by default) --> 
    android:layout_height="50dp" 
    android:background="@drawable/rectblack" 
    android:layout_marginTop="10dp" 
    android:layout_gravity="center" 
    android:minWidth="25px" 
    android:minHeight="25px"> 
    <TextView 
     android:text="Explode a Vin" 
     android:layout_gravity="center_vertical"  <!-- changed gravity here --> 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"   <!-- change to wrap_content --> 
     android:id="@+id/tvExVin" /> 
</LinearLayout> 
+0

es hat nicht funktioniert ... – user222786

+1

Ihre ändern 'orienation' zu "horizontal"(oder zu entfernen wird es tun das gleiche). Ich habe es gerade ausprobiert und zentriert es vertikal und auf die linke Seite des 'LinearLayout'. – codeMagic

+0

Was ich gefragt habe war, dass ich die Textansicht vertikal in die Mitte und nach links innerhalb von Linearlayout legen möchte. – user222786

-1
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_gravity="center_horizontal|center_vertical" 
    android:gravity="center_vertical|center_horizontal" 
    android:orientation="vertical" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="AppLock Demo" 
     android:textSize="30dp" /> 

</LinearLayout> 
+0

Sie sollten ein wenig erklären, warum das funktioniert :) –

+0

-1 Leute wie das sind bekannt für Sie stellen Code-Antworten dar. Es ist sehr ärgerlich. Sie stellen ihren Code zur Schau, als wäre es eine Kunst direkt neben Da Vincis. Ich glaube, es lässt sie irgendwie schlau aussehen (ich behaupte nicht, dass ich durch das Posten dieses Schwachsinns auch clever aussehe) Die Qualität der Antworten in Android SO ist so schlecht, dass es immer unzuverlässiger wird, weil diese Leute solche Antworten geben. Ich hoffe, die Moderatoren können sich damit befassen. "KEINE CODE NUR ANTWORT PLEA SE " –