我在谷歌的Inbox应用中看到,在撰写新电子邮件时,工具栏中有一个“关闭”按钮(参见图片)。
如何实现这一点?
我在谷歌的Inbox应用中看到,在撰写新电子邮件时,工具栏中有一个“关闭”按钮(参见图片)。
如何实现这一点?
Use
this.getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_close);
为了达到这个目的。
您可以创建自己的关闭图标,也可以从Material Design图标库中获取。另外,在上一行代码之前添加以下代码以使关闭功能作为返回箭头。
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?文档说明它只是一个成功的标志。 - brainmurphy1@drawable/ic_close_black_24dp
是从哪里来的? - CACuzcatlanToolbar 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);
}
fun setNavigationIcon(@DrawableRes resId: Int? = null) {
this.supportActionBar?.apply {
setDisplayHomeAsUpEnabled(true)
setHomeAsUpIndicator(resId ?: R.drawable.ic_close)
}
}
你可以定义一个样式:
<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>