2010-08-24 17 views
7

Фотографии: http://img838.imageshack.us/img838/1402/picse.pngКак достичь следующего результата с помощью RelativeLayout?

Как создать макет в Pic. 2 с использованием RelativeLayout ТОЛЬКО. Ниже представлен xml-макет первого снимка экрана.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
<TextView 
    android:id="@+id/timer_textview" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center" 
    android:layout_marginTop="10dip" 
    android:textSize="30sp" 
    android:layout_alignParentTop="true" 
    android:text="@string/timer_start" /> 

<ListView 
    android:id="@+id/questions_listview" 
    android:layout_below="@id/timer_textview" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" /> 

<Button android:id="@+id/true_btn" 
    android:text="@string/true_option" 
    android:layout_alignParentBottom="true" 
    android:layout_weight="1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

<Button 
    android:id="@+id/false_btn" 
    android:text="@string/false_option" 
    android:layout_toRightOf="@id/true_btn" 
    android:layout_alignBaseline="@id/true_btn" 
    android:layout_weight="1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 
</RelativeLayout> 
+2

'android: layout_weight' не имеет смысла в' RelativeLayout'. Я не знаю, как реализовать то, что вы ищете, используя один «RelativeLayout», извините. – CommonsWare

ответ

18

Вы можете использовать LinearLayout в нижней части для достижения этой цели , Но вы хотите использовать RelativeLayout макет только так:

<RelativeLayout android:layout_width="fill_parent" ... > 

...  

<View android:id="@+id/helper" 
android:layout_width="0dp" 
android:layout_height="0dp" 
android:layout_alignParentBottom="true" 
android:layout_centerHorizontal="true" /> 

<Button android:id="@+id/true_btn" 
android:layout_alignParentBottom="true" 
android:layout_alignParentLeft="true" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_toLeftOf="@id/helper"/> 

<Button 
android:id="@+id/false_btn" 
android:layout_alignBaseline="@id/true_btn" 
android:layout_alignParentRight="true" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_toRightOf="@id/helper" /> 

</RelativeLayout> 

Разве вы не можете реально использовать вложенные макеты?

+0

Я знаю, что могу использовать вложенный макет, во втором скриншоте я сделал именно это. Но я просто хочу знать ограничения RelativeLayout. –

+0

Вы попробовали мой код? – plugmind

+0

Упс ... Не работает приятель. В любом случае спасибо @ radek-k –

0

Если изменить кнопки

<Button android:id="@+id/true_btn" 
    android:text="@string/true_option" 
    android:layout_alignParentBottom="true" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

<Button 
    android:id="@+id/false_btn" 
    android:text="@string/false_option" 
    android:layout_toRightOf="@id/true_btn" 
    android:layout_alignBaseline="@id/true_btn" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" /> 

использовать по крайней мере всю ширину, хотя false_btn получает все оставшееся пространство.

Чтобы увеличить ширину первого true_btn можно установить атрибут minWidth - либо использовать фиксированное значение или получить ширину экрана и сделать minWidth половину этого

+0

Позвольте мне попытаться, и я вернусь к вам по этому поводу. –

+0

Ваша идея хорошая, я просто хочу знать, есть ли способы указать ширину экрана в целом? (i.e) Должен работать на всех устройствах с различными размерами экрана. –

Смежные вопросы