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.
Mais l'état réduit a la barre d'outils au mauvais endroit:
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 № 1C'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 = false
et 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
dansCollapsingToolbarLayout
pour éviter le chevauchement des titres étendusTabLayout
- ensemble
layout_height
àTabLayout
comme valeur constante - ajouter
layout_marginBottom
àToolbar
avec la même valeur queTabLayout
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>