標籤:actionbar 低版本 android
以下樣本為API<11,因為API>=11時本來就有ActionBar可以使用,所以不猜討論範圍之內
今天Google發布了最新的API 18,包括眾多新的效能,正好最近在研究ActionBarSherlock,看到最新的Support V7包也開始支援ActionBar了,就研究了一下使用方法,我把自己今天研究到的一個使用方法記錄如下,希望可以拋磚引玉吧.
1. 匯入Support V7的包.更新SDK 18以後,會發現在 \android-sdk\extras\android\support\v7目錄下有三個子檔案夾,分別是:appcompat\gridlayout\mediarouter,工作中比較常用的是appcompat,所以今天也只看了這個目錄下的android-support-v7-appcompat.jar.把這個檔案匯入到工程中.
2.在manifest檔案中,為你使用了ActionBar的actitity添加theme屬性,這個theme必須是 @style/Theme.AppCompat ,@style/Theme.AppCompat.Light.,@style/Theme.AppCompat.Light.DarkActionBar,三種中的一種,我偷懶了,直接在application節點中加了theme.
3.在res/menu目錄下,寫一個xml檔案。官方推薦每一個item項都要有icon和title表徵圖,因為系統預設顯示的是表徵圖,而且當螢幕空間不夠的時候,未顯示的菜單就會隱藏到列表中,而列表中只能顯示title欄位的值。
android:id="@+id/action_search" android:icon="@drawable/left" android:title="search"/> android:id="@+id/action_compose" android:icon="@drawable/right" android:title="compose"/>
4.實現Activity,讓它繼承ActionBarActivity.在onCreateOptionsMenu()方法中,擷取到每一個MenuItem,之後為每一個MenuItem調用MenuItemCompat.setShowAsAction(MenuItem item, int actionEnum)方法,就可以將功能表項目變為ActionBar中的子項了.
actionEnum的值有以下幾種:
MenuItemCompat.SHOW_AS_ACTION_ALWAYS (始終顯示)
MenuItemCompat.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW (隱藏列表中顯示)
MenuItemCompat.SHOW_AS_ACTION_IF_ROOM (螢幕有空間就顯示,沒空間就隱藏)
MenuItemCompat.SHOW_AS_ACTION_NEVER (永不顯示)
MenuItemCompat.SHOW_AS_ACTION_WITH_TEXT (既顯示表徵圖又顯示文字)
最後 在方法中要 return true
<pre name="code" class="java">public boolean onCreateOptionsMenu(Menu menu) { MenuInflater menuInflater = getMenuInflater(); menuInflater.inflate(R.menu.main, menu); MenuItem menuItem = menu.findItem(R.id.action_search); MenuItem findItem = menu.findItem(R.id.action_compose); MenuItemCompat.setShowAsAction(menuItem, MenuItemCompat.SHOW_AS_ACTION_ALWAYS); MenuItemCompat.setShowAsAction(findItem, MenuItemCompat.SHOW_AS_ACTION_WITH_TEXT); return true;}