使用新的设计库,我们应该设置工具栏标题CollapsingToolbarLayout,而不是它Toolbar自己(至少在使用折叠工具栏时).但setTitle()只在以下特定情况下更新标题:
1)当CollapsingToolbarLayout还没有标题时
2)此刻CollapsingToolbarLayout变得完全崩溃
3)此刻CollapsingToolbarLayout开始扩大
我实际上要做的是让标题成为EditText完全展开时的标题,允许用户为他/她的角色命名,然后显示为标题.我试图通过调用invalidate()或者requestLayout()以及这两种方法来强制解决这个问题
CollapsingToolbarLayout.没有效果.
有任何想法吗?
android material-design android-toolbar android-design-library android-collapsingtoolbarlayout
这是我的布局:
<android.support.design.widget.AppBarLayout
<android.support.design.widget.CollapsingToolbarLayout
...
<android.support.v7.widget.Toolbar
...
/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
Run Code Online (Sandbox Code Playgroud)
我希望标题保留在工具栏中,而不是在CollapsingToolbarLayout中.所以我改变了我的代码:
mCollapsingToolbar = ...
mCollapsingToolbar.setTitle(title);
Run Code Online (Sandbox Code Playgroud)
至:
mTitleBar = ...
setSupportActionBar(mTitleBar);
getSupportActionBar().setTitle(title);
Run Code Online (Sandbox Code Playgroud)
但标题不可见.我的设备是Nexus 6 5.1.0
提前致谢.
更新1:我已将代码更改为此,仍然无法正常工作:(
setSupportActionBar(mToolbar);
getSupportActionBar().setTitle(title);
getSupportActionBar().setDisplayShowTitleEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)
更新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 …Run Code Online (Sandbox Code Playgroud) 该setTitle()方法CollapsingToolbarLayout已经有一些错误(如只在滚动后显示,固定v22.2.1).
今天我更新了v23.0.0,它根本就没有用,就像没有显示标题一样.通过延迟多次调用它,我可以看到有时标题就在那里,但它确实不可靠(比如,你切换到另一个片段,然后回到第一个,并且不再有标题).
我发现有一个新属性,app:titleEnabled或者CollapsingToolbarLayout.setTitleEnabled(boolean).我已将两者都设置为true,但实际上并没有改变任何东西.
你们中的任何一个人都有同样的行为吗?
我想知道市场上有多少应用程序正在使用这个设计库,它已经从第一个版本充满了错误并且没有变得更好.
通过进一步的测试,似乎(我不是100%肯定)它连接到新的AppBarLayout.setExpanded()api.
如果我打电话:
collapsingToolbar.setTitle("title");
Run Code Online (Sandbox Code Playgroud)
它有效,但如果我打电话
collapsingToolbar.setTitle("title");
appbarLayout.setExpanded(true, true);
//OR
appbarLayout.setExpanded(true, true);
collapsingToolbar.setTitle("title");
Run Code Online (Sandbox Code Playgroud)
它没有 - 没有标题显示.同样setExpanded(false, true),即试图折叠工具栏.
好吧,不.即使我从不打电话abl.setExpanded()或问题,这个问题仍然存在app:expanded.此外,我们现在在v23.0.1上,但仍未解决.看起来我们中只有少数人正在体验它,因为我在这里找不到任何东西,也没有在官方的bug列表中找到.我在这里提交了一个错误.