2012-10-22 10 views
6

Sto cercando di ottenere un layout che sembra qualcosa di simile:Utilizzando layout_alignBaseline e layout_alignBottom in RelativeLayout insieme

Relative layout example

Cioè:

  1. TextView allineata (con margini) per genitori a sinistra e in alto.
  2. Un EditText a sinistra di TextView, a destra di Button e allineato alla linea di base con TextView.
  3. A Button allineato (con solo un margine destro) alla destra padre. Ed ecco la parte rotta: allineata in basso allo EditText.

Per qualsiasi motivo non funziona. Ecco il codice che ci si aspetta di lavorare:

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

Che esce in questo modo:

Broken RelativeLayout

Cosa sta succedendo?

Modifica

Mi dispiace non so perché ho cambiato questo esempio, ma nel mio codice In realtà sto usando un ImageButton, non Button, quindi la soluzione non può implicare l'allineamento con la linea di base del pulsante - il EditText deve essere allineato con lo inferiore (o centrale se possibile) del pulsante.

+0

potrebbe esserci un margine proveniente da un tema? – njzk2

+0

No ............ – Timmmm

risposta

4

Prova questa ..

<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

In realtà funziona, ma solo perché il pulsante ha una linea di base, ho usato un cattivo esempio nella mia domanda (mi dispiace!) - in realtà sto usando un 'ImageButton', non un 'bottone'. – Timmmm

+0

e allora? funzionerà anche con ImageButton. alignBaseline + alignBottom sarà sempre nella parte inferiore di 1 riga – AndrewS

Problemi correlati