【发布时间】:2015-01-23 09:00:42
【问题描述】:
我在 Google 的收件箱应用程序中看到,在撰写新电子邮件时,工具栏中的后退按钮(箭头)有一个“关闭”按钮(见图)。
我怎样才能做到这一点?
【问题讨论】:
标签: android android-actionbar material-design
我在 Google 的收件箱应用程序中看到,在撰写新电子邮件时,工具栏中的后退按钮(箭头)有一个“关闭”按钮(见图)。
我怎样才能做到这一点?
【问题讨论】:
标签: android android-actionbar material-design
使用
this.getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_close);
实现这一目标。
您可以创建自己的关闭图标或从 GitHub 上的material design icon set 获取。另外,在上面的行之前添加此行以使关闭功能作为后退箭头。
this.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
【讨论】:
您需要在清单中定义一个父级,然后如果使用支持应用栏,则覆盖 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;
}
【讨论】:
onSupportNavigateUp()返回false?文档说它只是一个成功的标志
【讨论】:
@drawable/ic_close_black_24dp 来自哪里?
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);
}
【讨论】:
你可以定义一个样式:
<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>
【讨论】: