13

я использовал CollapsingToolbarLayout в качестве родителя Toolbar, под ним макетпанель внутри CollapsingToolbarLayout, панель инструментов название не показывая

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <android.support.design.widget.CollapsingToolbarLayout 
     android:id="@+id/collapsing_toolbar_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/test_toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:minHeight="?attr/actionBarSize" 
      app:navigationIcon="@drawable/abc_ic_ab_back_mtrl_am_alpha" 
      app:theme="@style/ThemeOverlay.AppCompat.Light" /> 

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

Тогда я хочу, чтобы установить заголовок Toolbar со следующим кодом, но это не сработало. Название просто не показывалось.

Toolbar toolbar = (Toolbar) findViewById(R.id.test_toolbar); 
    setSupportActionBar(toolbar); 

    getSupportActionBar().setDisplayShowTitleEnabled(true); 
    getSupportActionBar().setTitle("ABC"); 

Я также попытался установить заголовок в CollapsingToolbarLayout со следующим кодом, он не работает.

CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar_layout); 
    collapsingToolbarLayout.setTitleEnabled(true); 
    collapsingToolbarLayout.setTitle("ABC"); 

Но если я удалил CollapsingToolbarLayout из моего макета и сделать AppBarLayout как прямой родитель Toolbar, приведенный выше код, чтобы установить название Toolbar работал.

Я что-то пропустил? Эта проблема настолько странная. Это ошибка в библиотеке поддержки дизайна? Как я могу решить проблему без изменения макета?

+0

Try 'андроид: fitsSystemWindows = "истинный"' 'на вашем CoordinatorLayout',' 'AppBarLayout' и CollapsingToolbarLayout'. –

+0

@ FarbodSalamat-Zadeh Спасибо за ваш ответ. Это не сработало после того, как я попробовал, как вы сказали. – alijandro

+2

любые обновления по этому вопросу? Опираясь на ту же проблему здесь! – Shatazone

ответ

5

Это временное решение. Я не исследовал код глубоко, но отключив обновление Toolbar в CollapsingToolbarLayout, он сработал.
Вот что я сделал:

public static void setRefreshToolbarEnable(CollapsingToolbarLayout collapsingToolbarLayout, 
              boolean refreshToolbarEnable) { 
    try { 
     Field field = CollapsingToolbarLayout.class.getDeclaredField("mRefreshToolbar"); 
     field.setAccessible(true); 
     field.setBoolean(collapsingToolbarLayout, refreshToolbarEnable); 
    } catch (NoSuchFieldException e) { 
     e.printStackTrace(); 
    } catch (IllegalAccessException e) { 
     e.printStackTrace(); 
    } 
} 
+1

Вы нашли постоянное решение этой проблемы? Я использую это в настоящее время, но я не знаю, является ли это надежным – Bhargav

+0

Не знаю, почему, но это работает, достаточно до сих пор, я не могу найти другой способ сделать это. – Lancelot

+0

Это должно работать! Отлично. На самом деле там уже были исправлены ошибки: https://code.google.com/p/android/issues/detail?can=2&q=183333&colspec=ID%20Status%20Priority%20Owner%20Summary%20Stars%20Reporter%20Opened&id=183333 I ответы на эти сообщения: http://stackoverflow.com/questions/32073812/collapsingtoolbarlayout-settitle-not-working-anymore | http://stackoverflow.com/questions/30682548/collapsingtoolbarlayout-settitle-does-not-update-unless-collapsed –

0

Move

CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar_layout); 
collapsingToolbarLayout.setTitleEnabled(true); 
collapsingToolbarLayout.setTitle("ABC"); 

из OnCreate в onCreateView внутри, если

+0

Почему у вас обоих одно имя? –

+0

Это не сработало для меня. – fobbymaster

1

Просто установите Сворачивание панели инструментов 'titleEnabled = ложь' в XML Тогда Toolbar название будет отображаться ,

app:titleEnabled="false" 
0

попробовать это:

collapsingToolbarLayout.setTitleEnabled(false); 
toolbar.setTitle("ABC"); 
+0

Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. - [Из обзора] (/ review/low-quality-posts/17863068) –

Смежные вопросы