#前言
android的toolbar的返回键有必要存在吗? google自家应用也保留了toolbar的返回键。 觉得和下方的实体返回键重了。
不管什么原因大众的使用习惯就是这样, 所以呢在开发过程中就会有了toolbar的返回和实体返回键都要实现的问题 而且要基本功能相同,这就有了功能同步的问题。
-
官方中把Toolbar中的那个返回键不叫做返回键 ,而叫做Up功能是返回该app的逻辑层级的上一层,即
parentActivity
。 详细见 -
返回back stack的上一个activity。 #实现 要想ActionBar或者Toolbar显示出home来需要调用如下代码
setSupportActionBar(toolbar);//这里提示可能会报出异常具体见下图getSupportActionBar().setHomeButtonEnabled(true);//设置toolbar后调用setDisplayHomeAsUpEnabledgetSupportActionBar().setDisplayHomeAsUpEnabled(true);
setHomeButtonEnabled
这个小于4.0版本的默认值为true的。但是在4.0及其以上是false, 该方法的作用:决定左上角的图标是否可以点击。没有向左的小图标。 true 图标可以点击 false 不可以点击。- setDisplayHomeAsUpEnabled(true) 给左上角图标的左边加上一个返回的图标 。对应
ActionBar.DISPLAY_HOME_AS_UP
- setDisplayShowHomeEnabled(true) 使左上角图标是否显示,如果设成false,则没有程序图标,仅仅就个标题,否则,显示应用程序图标,对应id为
android.R.id.home
,对应ActionBar.DISPLAY_SHOW_HOME
- setDisplayShowCustomEnabled(true) 使自定义的普通View能在title栏显示,即
actionBar.setCustomView
能起作用,对应ActionBar.DISPLAY_SHOW_CUSTOM
- setDisplayShowTitleEnabled(true) 对应
ActionBar.DISPLAY_SHOW_TITLE
其中
setHomeButtonEnabled
和setDisplayShowHomeEnabled
共同起作用,如果setHomeButtonEnabled
设成false
,即使setDisplayShowHomeEnabled
设成true
,图标也不能点击
接着配置AndroidManifest.xml
在Android 4.1上,只需要声明该activity的parentActivity
即可。 在Android 4.0及之前的版本上,需要include Support Library,然后添加相应的<meta-data>
。
... ...
接下来在代码中直接使用如下的的方法就可以了
- ActionBar的Up 这段在配置文件中配置了可以不用
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { // Respond to the action bar's Up/Home button case android.R.id.home: NavUtils.navigateUpFromSameTask(this); return true; } return super.onOptionsItemSelected(item); }
- 返回键调用的
@Override public void onBackPressed() { NavUtils.navigateUpFromSameTask(this); super.onBackPressed(); }
#参考资料