#前言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