#前言html
android的toolbar的返回键有必要存在吗? google自家应用也保留了toolbar的返回键。 以为和下方的实体返回键重了。java
无论什么缘由大众的使用习惯就是这样, 因此呢在开发过程当中就会有了toolbar的返回和实体返回键都要实现的问题 并且要基本功能相同,这就有了功能同步的问题。android
官方中把Toolbar中的那个返回键不叫作返回键 ,而叫作Up功能是返回该app的逻辑层级的上一层,即parentActivity
。 详细见Navigation with Back and Upapp
返回back stack的上一个activity。 #实现 要想ActionBar或者Toolbar显示出home来须要调用以下代码ide
setSupportActionBar(toolbar); //这里提示可能会报出异常具体见下图 getSupportActionBar().setHomeButtonEnabled(true); //设置toolbar后调用setDisplayHomeAsUpEnabled getSupportActionBar().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
,图标也不能点击this
接着配置AndroidManifest.xml
在Android 4.1上,只须要声明该activity的parentActivity
便可。 在Android 4.0及以前的版本上,须要include Support Library,而后添加相应的<meta-data>
。google
<application ... > ... <!-- The main/home activity (it has no parent activity) --> <activity android:name="com.example.MainActivity" ...> ... </activity> <!-- A child of the main activity --> <activity android:name="com.example.ActivityB" android:parentActivityName="com.example.MainActivity" > <!-- Parent activity meta-data to support 4.0 and lower --> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.MainActivity" /> </activity> </application>
接下来在代码中直接使用以下的的方法就能够了code
@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(); }
#参考资料xml