2011-10-27 14 views
5

Używam RelativeLayout w celu umieszczenia widoku. Teraz chcę dodać jeszcze jeden widok, który znajduje się poniżej pierwszego widoku, i powinien być wyśrodkowany w odniesieniu do pierwszego widoku. Ale wydaje się, że nie ma opcji, która nazywa się coś jak android: layout_alignCenter .. Jak mogę osiągnąć to zadanie?Center View below another View

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="fill_parent" 
     android:layout_width="fill_parent" android:gravity="top"> 

      <TextView 
     android:text="Blaa" 
     android:id="@+id/TextView1" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_marginLeft="100dp" 
     android:gravity="center" 
     /> 
      <TextView 
     android:text="Foo" 
     android:id="@+id/TextView2" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:layout_below="@+id/TextView1" 
      --- NEED STH THAT ALIGNS THIS SECOND VIEW CENTRAL UNDER THE FIRST VIEW -- 
     /> 
</RelativeLayout> 
+1

alignParentCenter ... – Warpzit

+0

To by wyrównać moim zdaniem centralny w nadrzędnej, ale chciałbym, aby wyrównać jej centralną reffered do drugiego View - Niestety kwestia była nieco niejednoznaczny – Salo

+0

Z 'android: gravity =" center "' masz oba wyśrodkowane, dlatego TextView2 jest wyśrodkowany poniżej TextView1. – iCantSeeSharp

Odpowiedz

0

Szukałem również odpowiedzi. Myślę, że najlepszą opcją jest umieszczenie ich w LinearLayout. Nie jestem pewien, ale wierzę, że nadymanie wielu układów jest procesem intensywnym, więc prawdopodobnie nie jest to najlepsza opcja, ale jest to jedyna rzecz, jaką mogę wymyślić.

2

To stara sprawa, ale nadal bez odpowiedzi, więc ...

Można mieć zarówno początek i koniec obu poglądów wyrównane w taki sam sposób. Spowoduje to zastąpienie właściwości width drugiej i spowoduje, że będzie ona szersza jako pierwsza, ale także przeniesie ją do pierwszej. Jeśli chcesz wyśrodkować drugi widok, możesz użyć grawitacji lub wypełnienia. Drugi pogląd idzie tak:

<TextView 
    android:id="@+id/TextView2" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:layout_below="@+id/TextView1" 
    android:layout_alignLeft="@+id/TextView1" 
    android:layout_alignRight="@+id/TextView1" 
    android:gravity="center" 
    android:text="Foo" /> 
0
<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="top" > 

    <TextView 
     android:id="@+id/TextView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_marginLeft="100dp" 
     android:gravity="center" 
     android:text="Blaa" /> 

    <RelativeLayout 
     android:id="@+id/rel_main" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/TextView1" 
     android:layout_alignRight="@+id/TextView1" 
     android:layout_below="@+id/TextView1" 
     android:gravity="center" > 

     <TextView 
      android:id="@+id/TextView2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerInParent="true" 
      android:text="Foo" /> 
    </RelativeLayout> 

</RelativeLayout>