Как добавить макет в другой? - PullRequest
0 голосов
/ 16 февраля 2012

Мне нужно удерживать каждый вид в одном макете, чтобы я мог переместить их все сразу ... Но когда я попытался поместить их все в макет, который должен быть в другом основном макете, они не могут быть видны. Что я делаю не так?

Я обнаружил, что макет с именем leftLayout не виден. Я сделал разные цвета макетов, и он показал мне основной, называемый меню. Я попробовал видимость, но это не сработало.

Моя страница дизайна выглядит так:

enter image description here

Это должно выглядеть так, но я вижу только белое окно при компиляции ...

Вот мой код XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/menu"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFF"
android:orientation="vertical" >

<RelativeLayout
    android:id="@+id/leftLayout"
    android:addStatesFromChildren="true"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_marginLeft="70dp"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/leftMenu"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:enabled="true"
        android:text="Left Menu"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#000000" />

 <ListView
        android:id="@+id/list"
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:layout_marginTop="70dp"
        android:enabled="true" >
    </ListView>

</RelativeLayout>

</RelativeLayout>

Решено! Я выяснил, что я просто ошибался в кодах Java при настройке поля. Так что здесь код в порядке.

Ответы [ 3 ]

0 голосов
/ 16 февраля 2012

В относительной компоновке вам всегда нужно указывать местоположение каждого дочернего элемента относительно родителя или между дочерними элементами.Поскольку вы указали макет, все макеты будут скопированы один поверх другого.Вы можете использовать дочерние параметры выравнивания, такие как «ВЫШЕ», «НИЖЕ» по отношению к другим макетам.Код ниже выглядел так, как вы хотели:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/menu" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#FFFFFF" 
    android:orientation="vertical" > 

<RelativeLayout 
    android:id="@+id/leftLayout" 
    android:addStatesFromChildren="true" 
    android:layout_width="100dp" 
    android:layout_height="fill_parent" 
    android:orientation="vertical"
    android:layout_alignleft="@+id/menu" > 

<TextView 
    android:id="@+id/leftMenu" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:enabled="true" 
    android:text="Left Menu" 
    android:layout_weight="0"
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:textColor="#000000" /> 

<ListView 
    android:id="@+id/list"
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent" 
    android:enabled="true"
    android:layout_marginTop="50dp"
    android:layout_weight="1"
    android:layout_below="@+id/leftMenu" > 
</ListView> 

</RelativeLayout>
</RelativeLayout>
0 голосов
/ 16 февраля 2012

Вы пробовали с LinearLayouts?

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/menu"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FFFFFF">

    <LinearLayout
        android:id="@+id/leftLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="70dp"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/leftMenu"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:enabled="true"
            android:text="Left Menu"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="#000000" />

        <ListView
            android:id="@+id/list"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginTop="70dp"
            android:enabled="true" >
        </ListView>
    </LinearLayout>

</LinearLayout>
0 голосов
/ 16 февраля 2012

Вы используете относительный макет, но не указали расположение дочерних представлений относительно друг друга.

В Относительной компоновке вы должны указать это, смотрите здесь: http://developer.android.com/resources/tutorials/views/hello-relativelayout.html

...