工具栏中的材料“closures”button而不是后退
我已经在Google的收件箱应用程序中看到,在工具栏中创build一个新的电子邮件,而不是后退button(箭头),它有一个“closures”button(见图片)。
我怎样才能做到这一点?
使用
this.getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_close);
为了达成这个。
你可以创build你自己的closures图标或从github上设置的材质devise图标中获取。 另外添加这个使后退箭头closuresfunction。
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; }
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>