如何在CollapsingToolbarLayout内的工具栏中固定标题

这是我的布局:

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

我希望标题保留在工具栏中,而不是在CollapsingToolbarLayout中。 所以我改变了我的代码:

 mCollapsingToolbar = ... mCollapsingToolbar.setTitle(title); 

至:

 mTitleBar = ... setSupportActionBar(mTitleBar); getSupportActionBar().setTitle(title); 

但标题不可见。 我的设备是Nexus 6 5.1.0

提前致谢。


更新1:我已将代码更改为此,仍然无法正常工作:(

 setSupportActionBar(mToolbar); getSupportActionBar().setTitle(title); getSupportActionBar().setDisplayShowTitleEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

更新2:以下是这三个视图的代码段:

 private void setUpAppBarLayout() { AppBarLayout appBarLayout = (AppBarLayout) findViewById(R.id.appbar_layout); appBarLayout.setBackgroundColor(extractBackgroundColor()); } private void setUpCollapsingToolbarLayout() { if (null == mCollapsingToolbar) { mCollapsingToolbar = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar); } } private void setUpToolbar(String title) { mToolbar = (Toolbar) findViewById(R.id.tb_main); mToolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { supportFinishAfterTransition(); } }); mToolbar.inflateMenu(R.menu.menu_group_activity); mToolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { if (R.id.action_settings == item.getItemId()) { ... return true; } else { return false; } } }); mToolbar.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mRecyclerView.smoothScrollToPosition(0); } }); setSupportActionBar(mToolbar); getSupportActionBar().setTitle(title); getSupportActionBar().setDisplayShowTitleEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); } 

在调用setSupportActionBar(mToolbar)之后,标题和菜单都是不可见的。

要使工具栏标题与CollapsingToolbarLayout一起使用,您需要将ctl的标题设置为false

 CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar); collapsingToolbarLayout.setTitleEnabled(false); 

解决方案很简单。 正如Daniel Persson所说,你只需设置collapsingToolbarLayout.setTitleEnabled(false); 或使用XML属性app:titleEnabled="false"并使用内部工具栏而不是CollapsingToolbarLayout设置标题,即: toolbar.setTitle(title);

它非常简单,不需要解决方法。

当你将它包装在CollapsingToolBarLayout中时,实际上看起来工具栏上的标题已经消失了,所以我遇到的唯一解决方案是创建一个新的TextView并将其添加到ToolBar,记住Toolbar是一个ViewGroup,所以你可以添加小部件。 它不像我想的那么干净,但它现在有效。

 TextView text = new TextView(this); text.setText(title); text.setTextAppearance(this, android.R.style.TextAppearance_Material_Widget_ActionBar_Title_Inverse); toolbar.addView(text); 

希望我也能很快find适合xml的解决方案。

这里的技巧是设置CollapsingToolbarLayout的titleEnabled = false

    

或者通过代码:

 CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar_layout); collapsingToolbarLayout.setTitleEnabled(false); 

你需要启用actionBar.setDisplayHomeAsUpEnabled(true); 在你的代码中

也许这个? 只需将android:fitsSystemWindows="true"AppBarLayout

       ...  

这就是你得到的