Je veux charger un fragment avec la barre collapsingToolbar réduite (c'est-à-dire sous sa forme non développée). Lorsque je définis le titre de la barre d'outils collapsingTool sans modifier les paramètres de présentation appbarLayout, le titre est défini correctement et je peux voir le titre.
Le problème est qu’il me faut également modifier les paramètres de présentation appBarLayout pour empêcher le développement de collapsingToolbar (c’est-à-dire que je souhaite qu’il ressemble et se comporte comme une barre d’outils ordinaire ne se réduisant pas pour ce fragment particulier). Cela fait cependant que le titre n'apparaît plus.
Ce que j'ai essayé: J'ai essayé en vain les solutions listées sur ces pages:
collapsingToolbarLayout.setTitleEnabled(true);
ne semble pas avoir d'effetMainActivity.Java Je pense avoir isolé le problème en fonction de ces lignes, mais je ne sais pas comment le résoudre.
collapsingToolbarLayout.setTitle("All Recent"); // works
appBarLayout.setExpanded(false, true); // works
// However, after adding the following lines, the above no longer works and the title does not appear in the toolbar
CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams)appBarLayout.getLayoutParams();
lp.height = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 80, getResources().getDisplayMetrics());
appBarLayout.setLayoutParams(lp);
activity_main.xml
<Android.support.design.widget.CoordinatorLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/coordinator_layout"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:fitsSystemWindows="true">
<Android.support.design.widget.AppBarLayout
Android:id="@+id/appbar_layout"
Android:layout_width="match_parent"
Android:layout_height="@dimen/detail_backdrop_height"
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="match_parent"
Android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginEnd="64dp"
app:expandedTitleMarginStart="48dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<ImageView
Android:id="@+id/backdrop"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:fitsSystemWindows="true"
Android:scaleType="centerCrop"
app:layout_collapseMode="parallax"
Android:adjustViewBounds="true" />
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
Android:minHeight="?attr/actionBarSize"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:title="@string/drawer_item_locate_events" />
</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:layout_gravity="fill_vertical"
Android:fillViewport="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<FrameLayout
Android:id="@+id/frame_fragments"
Android:layout_width="match_parent"
Android:layout_height="match_parent" />
</Android.support.v4.widget.NestedScrollView>
<Android.support.design.widget.FloatingActionButton
Android:id="@+id/floating_action_button"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_margin="@dimen/fab_margin"
Android:clickable="true"
Android:src="@mipmap/ic_add_a_photo"
app:layout_anchor="@+id/appbar_layout"
app:layout_anchorGravity="bottom|right|end" />
Le titre ne s'affiche plus après la modification des paramètres d'appbarLayout
Toute aide serait appréciée.
J'ai pu résoudre ce problème en utilisant la réponse suivante fournie par @DanielPersson à comment épingler le titre dans la barre d'outils à l'intérieur de CollapsingToolbarLayout :
collapsingToolbarLayout.setTitleEnabled(false);
toolbar.setTitle("My Title");
En appelant setTitleEnabled(false);
, le titre est apparu dans la barre d’outils.
Cela revient à définir le titre dans une barre d’outils normale.
Dans votre fichier de mise en page XML pour la barre d'outils réduite, dans la variable CollapsingToolbarLayout
, vous aurez une barre d'outils normale (Android.support.v7.widget.Toolbar
) pour laquelle vous devez définir un identifiant (Android:id="@+id/toolbar"
). Recherchez cette barre d'outils à l'aide de l'ID de votre classe Java et définissez le titre.
mToolbar = findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
getSupportActionBar().setTitle(R.string.home);
Ajoutez simplement cette ligne de code à la balise CollapsingToolbarLayout
dans votre présentation XML.
"app:title="Title You Want"
Cela a fonctionné pour moi.