2010-10-15 4 views
1

У меня есть следующий код в моем layout.xml.Вложение Относительная компоновка внутри линейного макета

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

В создателе макета плагина eclipse кнопка EditText и кнопка отображаются правильно. (См скриншот ниже)

alt text

Но на устройстве и эмулятора, кнопка не скрыта. (См скриншот ниже)

alt text

Любая идея, почему кнопка становится скрытый в устройстве?

ответ

6

Попробуйте следующие изменения в свой код. Сначала вы должны определить кнопку, так как она имеет фиксированную ширину, а затем поместите EditText, чтобы заполнить остальную часть пространства, расположенную слева от кнопки. Кнопка также должна быть определена в первую очередь (до Android 2.2, то есть).

<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

Спасибо. Работает как шарм. – Sudar

0

Я не вижу кнопку в компоновщике компоновки ... причина в том, что ширина EditText заполнена родителем, так что она заполняет родителя, выталкивая кнопку. Если вы должны использовать RelativeLayout, вам необходимо явно определить ширину EditText. В противном случае вы можете переключиться на горизонтальный LinearLayout и установить вес поля редактирования в «1».

Кроме того, есть недопустимые варианты для RelativeLayout:

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

Вы также можете использовать LinearLayout вместо RelativeLayout, чтобы архивировать это. Вы можете использовать android:layout_weight, чтобы кнопка не была наложена EditText. Ниже приведен образец xml, который может работать:

<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> 
Смежные вопросы