/ / La gravité (ou le positionnement) de la barre d'outils ne fonctionne pas correctement dans CollapsingToolbarLayout - android, android-layout, android-toolbar, android-collapsingtoolbar

La gravité (ou le positionnement) de la barre d'outils ne fonctionne pas correctement dans CollapsingToolbarLayout - android, android-layout, android-toolbar, android-collapsingtoolbar

J'ai une mise en page avec Barre d'outils et TablLayout avec un bel effet d'effondrement vu ci-dessous avec l'aide d'un CollapsingToolbarLayout:

La première photo est OK. C'est le comportement que je veux.

entrer la description de l'image ici


Mais l'état réduit a la barre d'outils au mauvais endroit:

entrer la description de l'image ici

Comme vous pouvez le voir La barre d’outils est en dessous de sa position par défaut, même si je mets sa gravité en haut.

Voici la mise en page complète:

<android.support.design.widget.AppBarLayout
android:id="@+id/appbar_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="215dp"
app:expandedTitleMarginBottom="56dp"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:layout_scrollFlags="scroll|exitUntilCollapsed">

<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/big_header"
android:fitsSystemWindows="true"
android:scaleType="centerInside"
app:layout_collapseMode="parallax" />


<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="104dp"
android:gravity="top"
android:minHeight="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:titleMarginTop="13dp"
/>


<android.support.design.widget.TabLayout
android:id="@+id/sliding_tabs"
android:layout_width="match_parent"
style="@style/CustomTabLayout"
android:layout_height="?attr/actionBarSize"
android:layout_gravity="bottom" />


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

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


<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior">

<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent" />

</android.support.v4.widget.NestedScrollView>

Je voudrais placer la barre d'outils à sa place, à côté du bouton "retour" à l'état non effondré. S'il vous plait aidez si vous le pouvez.

Réponses:

2 pour la réponse № 1

C'est un problème connu auquel moi aussi j'ai été confronté. Vous devez "pirater" un peu.
Si vous n'avez pas besoin de votre titre pour animer du plus grand au plus petit, mettez simplement collapsingToolbar.titleEnabled = falseet utilisez plutôt le titre de votre barre d'outils.
Si vous souhaitez que votre titre s'anime de petit à grand dans la barre d'outils de réduction, vous pouvez le pirater comme ceci:
Ajoutez un écouteur appBarLayout OffsetChanged et mettez-y ce code:

if (Math.Abs(e.verticalOffset) >= appBarLayout.totalScrollRange - 35) //Play with the number, and you should probably use dp instead of a hardcoded pixel number.
{
collapsingToolbar.titleEnabled = false;
SupportActionBar.title = "YourTitle";
}
else
{
collapsingToolbar.titleEnabled = true;
SupportActionBar.title = "";
}

Il bascule entre les deux titres ...


0 pour la réponse № 2

J'ai trouvé une solution plus simple sans aucun piratage et en pur XML:

  • utilisation expandedTitleMarginBottom dans CollapsingToolbarLayout pour éviter le chevauchement des titres étendus TabLayout
  • ensemble layout_height à TabLayout comme valeur constante
  • ajouter layout_marginBottom à Toolbar avec la même valeur que TabLayout layout_height
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">

<android.support.design.widget.CollapsingToolbarLayout
android:layout_width="match_parent"
android:layout_height="215dp"
app:expandedTitleMarginBottom="78dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed">

<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/big_header"
app:layout_collapseMode="parallax" />

<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="?attr/actionBarSize"
app:layout_collapseMode="pin" />

<android.support.design.widget.TabLayout
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:layout_gravity="bottom" />

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