工具栏中的材料“关闭”按钮而不是返回
问题描述:
我在Google的收件箱应用程序中看到了一个新的电子邮件,它在工具栏上,而不是后退按钮(箭头),它有一个“关闭”按钮(请参见图片)。工具栏中的材料“关闭”按钮而不是返回
我该如何做到这一点?
答
使用
this.getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_close);
实现这一目标。
您可以创建自己的关闭图标或从GitHub上的material design icon set获取。另外,在上面的行之前添加这一行以使关闭功能成为后退箭头。
this.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
答
您可以定义样式:
<style name="Theme.Toolbar.Clear">
<item name="toolbarNavigationIcon">@drawable/abc_ic_clear_mtrl_alpha</item>
</style>
,并用它在你的主题:
<style name="Theme.Clear">
<item name="toolbarTheme">@style/Theme.Toolbar.Clear</item>
</style>
答
您需要在清单定义父,然后覆盖onSupportNavigationUp()如果使用支持应用程序栏当然。此外,去这个网站时得心应手的图标包:https://www.google.com/design/icons/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.yourAwesomeLayout);
setupToolBar();
}
private void setupToolBar() {
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
if (toolbar == null) return;
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close_white_24dp);
}
@Override
public boolean onSupportNavigateUp() {
finish(); // close this activity as oppose to navigating up
return false;
}
+0
你从'onSupportNavigateUp()'返回false的任何原因?文件说它只是一个成功的标志 – brainmurphy1 2017-05-07 18:28:40
答
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle("Search");
toolbar.setNavigationIcon(R.drawable.abc_ic_clear_mtrl_alpha);
setSupportActionBar(toolbar);
答
在清单定义父活动的替代方法是处理采取的onOptionsItemSelected方法像什么行动在此示例中:
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()) {
// Respond to the action bar's Up/Home/back button
case android.R.id.home:
finish();
break;
}
return super.onOptionsItemSelected(item);
}
它不工作。它不会替换带有新图标的后退箭头,都会出现。此外,通过此解决方案,该图标不会获得“colorPrimaryDark”属性。 – 2014-11-25 11:47:39
@MartaRodriguez请参阅我的更新回答 – 2014-11-25 11:59:54
它的作品,但并不完全是我想要的。我预计会像后面的图标一样工作,用“colorPrimaryDark”。但似乎“关闭”图标不是SDK的一部分。谢谢@AlokNair! – 2014-11-25 12:08:23