2013-07-10 22 views
14

Próbuję wyśrodkować TextView w LinearLayout i jest centrowany poziomo, ale nie pionowo.Android - Centrum TextView w LinearLayout

poniżej jest mój kod

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

W końcu chciałbym to być skupione pionowo po lewej stronie Linearlayout, jeśli ktoś może dowiedzieć się, jak to zrobić, to byłoby świetnie.

Dzięki!

+0

usunąć te dwie linie z linearlayout android: MinWidth = "25px" android: minHeight = "25px" –

Odpowiedz

38

mieć wagę i layout_gravity odwrócone. Możesz mieć wiele wartości w atrybucie grawitacji oddzielonych przez "|". Spróbuj tego:

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

Dla wyjaśnienia:

android:layout_gravity="center_horizontal" będzie wyśrodkować LinearLayout poziomo w jego rodzica.

android:gravity="center_vertical|left" wyśrodkuje TextView (i dowolne inne dzieci) w pionie wewnątrz LinearLayout i wyrówna w lewo.

+1

i tylko ze względu na dzielenie się wiedzą, można usunąć "android: grawitacja" z układu liniowego i umieścić "android: layout_gravity" w widoku tekstowym, z tą samą wartością "center_vertical | left" i uzyskać ten sam wynik. – invertigo

+0

więc umieszczenie 'layout_gravity = center_vertical | left" 'w widoku tekstowym i usunięcie go z układu liniowego mają ten sam efekt? – user222786

+0

@ user222786 dokładnie – invertigo

2

Spróbuj zmienić gravity do

android:layout_gravity="center_vertical" 

gravity służy do umieszczenia zawartości wewnątrz View i layout_gravity służy do umieszczenia View w jego rodzica.

Ale jestem zdezorientowany przez "Na koniec chciałbym, aby był wyśrodkowany pionowo na lewo od Linearlayout". Ale z tego, jak brzmi, moja odpowiedź powinna dać ci to, czego chcesz.

Ponadto, o ile nie istnieje bardzo dobry powód, nie powinno być konieczne korzystanie z LinearLayout ani żadnego rodzica dla jednego dziecka. Jeśli możesz podać lepsze wyjaśnienie tego, co chcesz, a nawet zrzut ekranu, możemy pomóc w lepszym rozwiązaniu.

To daje pożądany efekt

<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

to nie działał ... – user222786

+1

Zmień 'orienation' do "horyzontalne"(lub usuwając to zrobi to samo). Po prostu wypróbowałem to i wyśrodkowałem to pionowo i po lewej stronie 'LinearLayout' – codeMagic

+0

To, o co prosiłem, to że chcę umieścić widok tekstu w środku w pionie i na lewo wewnątrz Linearlayout – 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

powinieneś nieco wyjaśnić, dlaczego ten działa :) –

+0

-1 Ludzie tacy jak ten są znani z udzielając tylko odpowiedzi kodu, jest bardzo denerwująca, obnoszą się z kodem tak, jakby to była sztuka zaraz obok Da Vinciego. Wierzę, że to sprawia, że ​​wyglądają jakoś inteligentnie (nie twierdzę, że wyglądam mądrze, publikując ten rant). jakość odpowiedzi w Androidzie SO jest tak słaba, że ​​staje się bardziej niewiarygodna z powodu tego, że ludzie udzielają odpowiedzi w ten sposób. Mam nadzieję, że moderatorzy będą w stanie to rozwiązać. "ŻADNY KOD TYLKO ODPOWIEDŹ PLEA SE " –