2010-10-15 5 views
1

J'ai le code suivant dans mon fichier layout.xml.Imbrication de la disposition relative dans la disposition linéaire

<?xml version="1.0" encoding="utf-8"?> 

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

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

    <EditText android:hint="@string/feed_url" 
     android:id="@+id/feedUrl" android:textSize="14dp" android:inputType="textUri" 
     android:layout_marginRight="45dp" android:layout_height="wrap_content" android:layout_width="fill_parent"> 
    </EditText> 

    <Button android:id="@+id/getGraph" 
     android:text="@string/get" 
     android:layout_toRightOf="@id/feedUrl" 
     android:layout_alignParentRight="true"   
     android:layout_height="wrap_content" android:width="45dp" android:layout_width="wrap_content"> 
    </Button> 

</RelativeLayout> 

<WebView android:id="@+id/wv1" android:layout_height="wrap_content" 
    android:layout_width="fill_parent" /> 
</LinearLayout> 

Dans le créateur de disposition de plugin eclipse, le bouton EditText et le bouton sont affichés correctement. (Voir la capture d'écran ci-dessous)

alt text

Mais sur l'appareil et l'émulateur, le bouton est caché. (Voir la capture d'écran ci-dessous)

alt text

Toute idée pourquoi le bouton se cache dans l'appareil?

Répondre

6

Essayez les modifications suivantes à votre code. Vous devez d'abord définir le bouton, car il est de largeur fixe, puis placez EditText pour remplir le reste de l'espace, placé à gauche du bouton. Le bouton doit également être défini en premier (avant Android 2.2, c'est).

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

    <Button 
     android:id="@+id/getGraph" 
     android:text="@string/get" 
     android:layout_alignParentRight="true"   
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     /> 
    <EditText 
     android:hint="@string/feed_url" 
     android:id="@+id/feedUrl" 
     android:textSize="14dp" 
     android:inputType="textUri" 
     android:layout_marginRight="45dp" 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent" 
     android:layout_toLeftOf="@id/getGraph" 
     /> 
</RelativeLayout> 
+0

Merci. Fonctionne comme un charme. – Sudar

0

Je ne peux pas voir le bouton dans le constructeur de disposition ... la raison, je pense est que la largeur EditText est fill parent donc il remplit parent poussant le bouton. Si vous devez utiliser RelativeLayout, vous devez définir explicitement la largeur du EditText. Sinon, vous pouvez passer à LinearLayout horizontal et définir le poids de la zone d'édition sur "1".

En outre, il existe des options non valides pour RelativeLayout:

xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="horizontal 
0

Vous pouvez également utiliser LinearLayout au lieu de RelativeLayout pour l'archiver. Vous pouvez utiliser android:layout_weight pour que Button ne soit pas recouvert par EditText. Voici l'exemple de xml qui peut fonctionner:

<LinearLayout android:orientation="horizontal" 
    android:layout_height="wrap_content" android:layout_width="fill_parent"> 
    <EditText android:hint="@string/feed_url" 
     android:id="@+id/feedUrl" android:textSize="14dp" 
     android:inputType="textUri" android:layout_marginRight="45dp" 
     android:layout_height="wrap_content" android:layout_width="fill_parent" /> 
    <Button android:id="@+id/getGraph" android:text="@string/get"  
     android:layout_height="wrap_content" android:width="45dp" 
     android:layout_width="wrap_content" 
     android:layout_weight="1" /> 
</LinearLayout> 
Questions connexes