Поместите RelativeLayout под LinearLayout внутри другого LinearLayout

Я пытаюсь разместить RelativeLayout под LinearLayout, вложенным в другой LinearLayout, и это не работает.

Есть ли способ сделать это?

Мне нужно сохранить возможность настройки весов и возможность размещения макета (с некоторым прозрачным фоном) над другим макетом.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/relative"
   android:layout_width="wrap_content" android:layout_height="fill_parent" >
    <LinearLayout  android:layout_width="wrap_content" android:layout_height="fill_parent" android:gravity="center_horizontal" android:orientation="vertical" android:weightSum="800">
        <LinearLayout android:layout_alignParentRight="true" android:layout_width="fill_parent" android:id="@+id/infoCanso" android:orientation="vertical" android:background="@drawable/black_glossy_bg_iphone" android:gravity="center_vertical|center_horizontal" android:layout_height="0dip" android:layout_weight="90">

        </LinearLayout>
        <LinearLayout android:id="@+id/albumBG" android:layout_width="wrap_content" android:layout_below="@+id/infoCanso" android:layout_height="0dip" android:layout_weight="482">

        </LinearLayout>
        <LinearLayout android:id="@+id/linearLayout1" android:background="#80ffffff" android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="90">

        </LinearLayout>
        <LinearLayout android:layout_width="fill_parent" android:layout_height="0dip" android:id="@+id/LinearLayout01" android:layout_weight="100" android:background="#ffffff">

        </LinearLayout>
    </LinearLayout>
    <RelativeLayout android:layout_width="fill_parent" android:layout_height="50dip" android:id="@+id/volumeBar" android:background="#80000000" android:gravity="center" android:layout_below="@+id/infoCanso">

    </RelativeLayout>
</RelativeLayout>

person sergi    schedule 15.06.2011    source источник
comment
не пытайтесь использовать как можно больше макетов в своем xml, это не очень хороший дизайн, если вы хотите, чтобы такой дизайн означал, попробуйте использовать сам RelativeLayout, используя свойство android:layout_below для нужного вам представления.   -  person Senthil Mg    schedule 15.06.2011
comment
Я уже сделал это с помощью RelativeLayouts, но мне нужно использовать свойство layout_weight из LinearLayouts. Почему это плохо с LinearLayouts¿?   -  person sergi    schedule 15.06.2011
comment
Вы получаете какую-либо ошибку или она не работает в соответствии с вашими ожиданиями?   -  person Jaydeep Khamar    schedule 15.06.2011
comment
Нет ошибки, это не рабочий документ, как я ожидал.   -  person sergi    schedule 15.06.2011


Ответы (2)


Вы должны убедиться, что ваши веса в сумме составляют 100. Простой способ сделать то, что вы делаете, - это объявить ширину как «0dp», а затем использовать свои веса для управления размером ваших макетов.

Я описал нечто подобное в этом сообщении.

Удачи!

person Codeman    schedule 20.06.2011

Это можно сделать с помощью свойства layout_gravity конкретного макета. Перейдите к XML в relativeLayout, установите для свойства layout_gravity значение «TOP», например android:layout_gravity="top", а для linearlayout layout_gravity - android:layout_gravity="bottom"

помните, что setGravity и layout_gravity — это разные вещи! Это можно сделать с помощью XML, но я не знаю кода. Надеюсь я ответил на ваш вопрос

спасибо

person optimus    schedule 24.12.2011