android - with - Layout do coordenador com barra de ferramentas em fragmentos ou atividade




put fragment inside activity android (2)

Com a nova biblioteca de design, existem vários novos layouts que mudam bastante a forma como a barra de ferramentas pode se comportar, se o desenvolvedor desejar. Como fragmentos diferentes têm comportamentos e objetivos diferentes, por exemplo, um fragmento de galeria com uma barra de ferramentas recolhida mostrando uma foto importante ou um fragmento sem uma visualização de rolagem que simplesmente não precisa do appbarlayout para ocultar a barra de ferramentas, ter uma única barra de ferramentas na atividade pode provar difícil.

Então, com isso, devo mover a barra de ferramentas para cada fragmento? Nesse caso, tenho que definir o supportActionBar cada vez que mostro um fragmento e também tenho uma referência da atividade no fragmento que anula a natureza independente dos fragmentos. Se eu deixar a barra de ferramentas sozinha na atividade, tenho que ter vários layouts definidos para cada tipo de comportamento em cada fragmento. Qual seria a melhor abordagem?


Aqui está a minha solução

<!-- Put your fragment inside a Framelayout and set the behavior for this FrameLayout -->
<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">

    <!-- Your fragment -->
    <include layout="@layout/content_main" />

</FrameLayout>

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:layout_scrollFlags="scroll|enterAlways"
        app:popupTheme="@style/AppTheme.PopupOverlay" />

</android.support.design.widget.AppBarLayout>


Essa é uma pergunta muito boa: as barras de Toolbar que precisam agir como uma ActionBar devem ser mantidas em uma Activity ou um Fragment ? Tendo pesquisado diferentes perguntas e documentação, não consegui encontrar uma solução que cubra todos os casos. Portanto, depende realmente da sua situação, a seguir.

Caso 1: a barra de ferramentas deve ser a substituição do ActionBar

Se a barra de ferramentas tiver que se comportar como uma ActionBar normal (ou se um fragmento máximo de 1 for exibido de tempos em tempos), acho que a melhor / mais simples maneira é usar as Activities tradicionais com a própria barra de ferramentas e colocar seu fragmento. Dessa forma, você não precisa se preocupar com o momento em que barra de ferramentas deve ser exibida.

Também é possível alterar o ActionBar (-comportamento) de Fragments, mas eu não o recomendaria, pois isso obriga a acompanhar qual Fragment alterou o ActionBar quando. Nem sei se a configuração da ActionBar pode ser feita várias vezes.

Caso 2: cada fragmento deve ter sua própria (parte da) barra de ferramentas

Você também pode optar por colocar diferentes barras de ferramentas independentes em diferentes fragmentos, com suas próprias ações. Dessa forma, você pode exibir diferentes fragmentos um ao lado do outro - cada um com suas próprias ações na barra de ferramentas - e sugerir que seja 1 barra de ferramentas (talvez como o aplicativo Gmail, embora não tenha certeza). No entanto, isso significa que você teria que inflar essas barras de ferramentas por conta própria, mas não deve ser muito difícil.

Espero que isso ajude a fazer uma escolha.

(Desculpe se cometi algum erro (de idioma))





android-actionbar