web-dev-qa-db-fra.com

collapsingToolbarLayout.setTitle (title) ne fonctionne pas après la modification de appbarLayout

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:

MainActivity.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  Title no longer shows after altering appbarLayout's parameters

Toute aide serait appréciée.

8
Vinnie

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.

36
Vinnie

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);
2
Apurva Thorat

Ajoutez simplement cette ligne de code à la balise CollapsingToolbarLayout dans votre présentation XML. 

"app:title="Title You Want"

Cela a fonctionné pour moi.

0