2012-10-22 10 views
6

Próbuję uzyskać układ, który wygląda mniej więcej tak:Korzystanie layout_alignBaseline i layout_alignBottom w RelativeLayout razem

Relative layout example

czyli:

  1. TextView wyrównany (z marginesami) do rodzica lewa i góra.
  2. Anpo lewej stronie TextView, na prawo od Button i wyrównane do linii podstawowej z TextView.
  3. A Button wyrównany (tylko z prawym marginesem) do prawego nadrzędnego. A oto zepsuta część: wyrównana do dołu do EditText.

Z jakiegokolwiek powodu nie działa. Oto kod Spodziewam się działać:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <TextView 
     android:id="@+id/text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="32dp" 
     android:layout_marginTop="32dp" 
     android:text="Text:" /> 

    <EditText 
     android:id="@+id/edit" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/text" 
     android:layout_toLeftOf="@+id/button" 
     android:layout_toRightOf="@+id/text" 
     android:ems="10" > 

     <requestFocus /> 
    </EditText> 

    <Button 
     android:id="@+id/button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_alignBottom="@+id/edit" 
     android:layout_marginRight="32dp" 
     android:text="Ok" /> 

</RelativeLayout> 

To wychodzi tak:

Broken RelativeLayout

Co się dzieje?

Edit

Niestety nie jestem pewien, dlaczego zmieniłem ten przykład, ale w moim kodu mam faktycznie używając ImageButton, nie Button, więc rozwiązanie nie może obejmować dostosowanie z linii bazowej przycisk - EditText musi być wyrównany z dnem dolnym (lub środkowym, jeśli to możliwe) przycisku.

+0

może być margines pochodzący z motywu? – njzk2

+0

Nie ............ – Timmmm

Odpowiedz

4

Spróbuj ..

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 

<TextView 
    android:id="@+id/text" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginLeft="32dp" 
    android:layout_marginTop="32dp" 
    android:text="Text:" /> 


<EditText 
    android:id="@+id/edit" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBaseline="@+id/text" 
    android:layout_toLeftOf="@+id/button" 
    android:layout_toRightOf="@+id/text" 
    android:ems="10" > 

    <requestFocus /> 
</EditText> 

<Button 
    android:id="@+id/button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBaseline="@+id/edit" 
    android:layout_alignBottom="@+id/edit" 
    android:layout_alignParentRight="true" 
    android:layout_marginRight="30dp" 
    android:text="Ok" /> 

+0

Właściwie to działa, ale tylko dlatego, że przycisk ma linię podstawową, użyłem złego przykładu w moim pytaniu (przepraszam!) - w rzeczywistości używam 'ImageButton', nie "Przycisk". – Timmmm

+0

co z tego? będzie działać również z ImageButton. alignBaseline + alignBottom będzie zawsze na dole 1 linii – AndrewS