2012-12-23 19 views
12

Mam 3 RelativeLayout, który jest wewnątrz main_RelativeLayout. Widok będzie w pionie. Tak więc mam 3 RelativeLayout, które ustawiają się obok siebie i chcę, żeby wypełniły cały ekran, nie ma znaczenia, jaki będzie rozmiar ekranu. My, widok układ:RelativeLayout waga

<RelativeLayout 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:background="@drawable/backg" 
> 

<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginTop="@dimen/top_mr_image" 
    android:src="@drawable/temp" /> 

<RelativeLayout 
    android:id="@+id/r1" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/imageView1" 
    android:layout_marginLeft="10dp" 
    android:background="@drawable/r1bg" 
    android:layout_weight="1" 

    > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_marginLeft="@dimen/txt_mr_right" 
     android:layout_marginRight="@dimen/txt_mr_right" 
     android:layout_marginTop="39dp" 
     android:text="S" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@id/textView1" 
     android:layout_marginLeft="@dimen/txt_mr_right" 
     android:layout_marginRight="@dimen/txt_mr_right" 
     android:text="T" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 
</RelativeLayout> 

    <RelativeLayout 
     android:id="@+id/r2" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignTop="@+id/r1" 
     android:layout_toRightOf="@+id/r1" 
     android:layout_weight="1" > 
    </RelativeLayout> 

      <RelativeLayout 
     android:id="@+id/r3" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignTop="@+id/r2" 
     android:layout_toRightOf="@+id/r2" 
     android:layout_weight="1" > 

    </RelativeLayout> 

ustawić weight=1 i layout_width=0dp dla każdego releativeLayout i ta technika działa z przyciskami, myślałem, że to samo będzie z relativeLayout wydaje moje myśli były błędne. Dowolny pomysł?

UPD1: Dodałem obraz tego, co chciałby mieć

enter image description here

+0

Robiłem co szukałem, dzięki za komentarze – Daler

Odpowiedz

20

RelativeLayout nie zwraca uwagi na android:layout_weight. (To jest własność LinearLayout.LayoutParams, ale nie stanowi RelativeLayout.LayoutParams.)

Powinieneś być w stanie uzyskać układ, który ma o wiele prostszy hierarchii widoku. Nie jest jasne, co próbujesz zrobić, ponieważ ostatnie dwa RelativeLayout s są puste. Jeśli potrzebujesz organizacji wyłącznie wertykalnej, sugeruję użycie LinearLayout zamiast RelativeLayout.

EDIT Na podstawie Twojej edycji wygląda na to, że chcesz uzyskać poziomy układ trzech złożonych widoków, z których każdy może być klikalny. Myślę, że coś takiego jak poniżej będzie działać:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    > 

    <!-- First column --> 
    <LinearLayout 
     android:id="@+id/firstColumn" 
     android:orientation="vertical" 
     android:gravity="center_horizontal" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     > 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="..." /> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:text="text 1" 
      . . . /> 
    </LinearLayout> 

    <!-- Second column --> 
    <LinearLayout . . . > 
     . . . 
    </LinearLayout> 
</LinearLayout> 

Jeśli zawartość przyciski nie są prawidłowe, można zastąpić drugim poziomie LinearLayout poglądy z RelativeLayout jeśli pomaga zorganizować układ lepiej.

+0

Mam elementy wewnątrz relativeLayout, które muszą być ustawione w dokładny sposób, będzie to rodzaj niestandardowego elementu clickalble z obrazami i itp. Jak moje knowledge kodowania jest słaba – Daler

+0

@Daler - Jeśli podasz więcej szczegółów na temat układu, który chcesz (szkic lub zrzut ekranu byłby świetny), pomożemy ci go osiągnąć. Zwróć też uwagę, że pionowy "LinearLayout" może zawierać układy zagnieżdżone, aby zapewnić poziomą organizację w dowolnych wierszach. –

+0

dziękuję za twoją opinię, zaktualizowałem mój post, możesz zobaczyć, co chciałbym mieć. Chcę, aby każdy kliknik względnyLayout był klikalny, więc będą działać jako przycisk. wszystkie trzy mają ten sam wzór z różnymi typami i tekstami obrazu – Daler

4

RelativeLayouts nie obsługuje wagi. Jeśli chcesz używać wag, musisz użyć LinearLayout jako kontenera nadrzędnego.

+0

co jeśli rodzic jest relativeLayout? i mogę dodać resztę relativeLayouts wewnątrz linearLayout. Trochę hardcore, ale możliwe – Daler

+0

Myślę, że możesz mieć RelativeLayout -> LinearLayout -> RelativeLayout x 3, ale nie jestem pewien, co by to osiągnąć. – dmon

0

Rozwiązanie jest bardzo proste. Szukałem rozkładu masy w układzie względnym.

To mała sztuczka dla wszystkich tych sytuacji.

Zastosowanie LinearLayout z android: orientacja = „poziomej”

Powiązane problemy