Android Layout: объединить, как позиционировать включение - PullRequest
0 голосов
/ 05 марта 2011

У меня есть макет слияния, который включает в себя несколько элементов.Я должен быть в состоянии позиционировать относительно.Сверху и снизу легко, потому что вы можете использовать android: layout_gravity = "bottom" ИЛИ android: layout_gravity = "top".Теперь, есть ли способ размещения третьего включения относительно того, что вверху (прямо под ним)?,Я читал, что вы можете обернуть включения в RelativeLayout, но разве это не противоречит цели использования Merge?

    <merge
   xmlns:android="http://schemas.android.com/apk/res/android">


    <com.testmerge.TitleBar
       id="@+id/titlebar"
       android:layout_width="fill_parent"
       android:layout_height="35dip"
       android:layout_gravity="top"
               android:paddingTop="0dip"
       android:background="@drawable/title_bar"
    />

   <com.testmerge.StatusBar
       android:layout_width="fill_parent"
       android:layout_height="35dip"
       android:paddingTop="0dip"
       android:background="@drawable/title_bar"
   />

   <com.testmerge.OkCancelBar
       android:layout_width="fill_parent"
       android:layout_height="60dip"
       android:layout_gravity="bottom"
               android:paddingTop="0dip"
       android:background="@drawable/header_bkgrnd"
   />

   <!--"#AA000000"-->
</merge>

1 Ответ

1 голос
/ 05 марта 2011

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

Если вы обратитесь к странице объяснения слияния , вы увидите, как TextView, добавляемый до того, как макет фрейма занимает некоторое пространство. Остальная часть пространства автоматически заполняется FrameLayout, так что доступное свободное пространство имеет конкретные границы в любой момент времени. Если мы добавим еще один Layout, который займет это место, автоматически созданный FrameLayout станет бесполезным. Тег решает это путем добавления дочерних элементов в автоматически созданный FrameLayout , как если бы этот макет был объявлен в нашем XML. И это является целью тега <merge />.

В вашем случае вам, вероятно, понадобится RelativeLayout, поскольку ваше приложение, очевидно, требует большей сложности. Я считаю, что тег <merge /> не является решением для вас.

...