Вопрос

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

У меня простой макет из двух столбцов, левая сторона - панель навигации с кнопками, правая сторона - панель содержимого.Когда пользователь нажимает одну из кнопок (скажем, третью вниз), я бы хотел, чтобы плавающий вид был выровнен справа от этой кнопки, но плавал в верхней части панели содержимого.Вот картинка, иллюстрирующая, что я имею в виду:Layout

Все, что я пробовал, помещает плавающее меню внутри панели навигации или внутри панели содержимого, а это не то, что я хочу.Есть какие-нибудь идеи?Вот в основном то, что у меня есть на данный момент:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        android:layout_alignParentLeft="true"
        android:id="@+id/navigation_bar"
    >
        <FrameLayout 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="0.14"
        >
            <ImageButton 
                android:id="@+id/button1_btn"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/icon"
                android:layout_gravity="center"
            />
        </FrameLayout>
        <FrameLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="0.14"
        >
            <ImageButton 
                android:id="@+id/button2_btn"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/icon"
                android:layout_gravity="center"
            />
        </FrameLayout>
    </LinearLayout>
    <FrameLayout
        android:id="@+id/content"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="0.14"
        android:layout_toRightOf="@id/navigation_bar"
    >
    </FrameLayout>
</RelativeLayout>
Это было полезно?

Решение

FrameLayout позволяет вам создать представление, перекрывающее другое представление.Я не уверен, что имеет смысл иметь их только с одним дочерним представлением, как у вас в вашем примере.Попробуйте создать FrameLayout на самом высоком уровне, с вашим "статическим" представлением в качестве первого дочернего элемента и плавающим меню в качестве второго дочернего.

Тот Самый документы разработчика получите хороший обзор типов макетов, это может помочь вам начать работу.

Другие советы

RelativeLayout это то, что вы хотите.
FrameLayout должен иметь только один дочерний элемент и поэтому обычно используется только в качестве заполнителя там, где другие макеты появляются позже (например, в основном кадре действия).
AbsoluteLayout устарел и не должен использоваться.

RelativeLayout позволяет представлениям перекрываться и позволяет делать практически все, что захотите.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top