Pergunta

Estou brincando com isso há alguns dias, espero que alguém aqui possa me dar uma mão.

Eu tenho um layout simples de duas colunas, o lado esquerdo é uma barra de navegação com botões, o lado direito é um painel de conteúdo. Quando o usuário toca um dos botões (digamos, o terceiro para baixo), eu gostaria de ter uma vista flutuante alinhada à direita deste botão, mas flutuando em cima do painel de conteúdo. Aqui está uma imagem para ilustrar o que quero dizer:Layout

Tudo o que tentei empurra o menu flutuante dentro da barra de navegação ou dentro do painel de conteúdo, o que não é o que eu quero. Alguma ideia? Aqui está basicamente o que tenho até agora:

<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>
Foi útil?

Solução

Um Framelayout permite que você tenha uma visualização sobrepondo outra visualização. Não tenho certeza se faz sentido tê -los com apenas uma visão da criança, como você tem em seu exemplo. Tente ter um Framelayout no nível mais alto, com sua visão "estática" como o primeiro elemento filho e o menu flutuante como o segundo filho.

o Documentos do desenvolvedor Tenha uma boa visão geral dos tipos de layout, pode ajudá -lo a começar.

Outras dicas

RelativeLayout é o que você quer.
FrameLayout deve ter apenas um filho e, portanto, geralmente é usado apenas para um espaço reservado onde outros layouts vêm mais tarde (como o quadro principal da atividade).
AbsoluteLayout é preterido e não deve ser usado.

RelativeLayout Permite que as vistas se sobreponham e permite fazer, praticamente tudo o que você quiser.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top