Android中的ActionBar的簡介(翻譯自官方文檔)——————個人筆記

ActionBar在3.0以後提供,在主題爲Theme.Holo中的Activity中是默認存在的。
向下兼容:
        


1、刪除或隱藏ActionBar
   a.在指定的Activity指定主題@android:style/Theme.Holo.NoActionBarf
   b.使用方法hide()隱藏,或者使用show()方法顯示
   note:
        當需要多次隱藏、顯示ActionBar的時候,由於每次顯示或隱藏的時候,應用需要re-layout整個佈局,
這樣效率很低,所以需要使用overlay mode。這個overlay mode 把action bar繪製在Activity佈局的
最上層,使用這種方式,可以優化效率。
使用overlay mode 的方法:創建一個主題,並在主題中把android:windowActionBarOverlay設置爲true。
                       
 
2、添加Actionitem
3、使用Split ActionBar
    4.0以後的系統提供split action bar 用於優化不同屏幕大小的用戶體驗
使用方法:在清單文件中的activity或application節點中添加屬性:uiOptions="splitActionBarWhenNarrow"
使action bar icon and title失效或者隱藏的方法:
setDisplayShowHomeEnabled(false) 
setDisplayShowTitleEnabled(false))
 
4、Using the App Icon for Navigation


5、添加Action View
1.添加
  在menu下的xml文件
  <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_search"
 android:title="@string/menu_search"
 android:icon="@drawable/ic_menu_search"
 android:showAsAction="ifRoom|collapseActionView"
 android:actionViewClass="android.widget.SearchView" />
</menu>
在showAsAction屬性中添加collapseActionView的時候,點擊當前的item就會展開actionViewClass指定的view對象
可以在onCreateOptionsMenu方法中使用Menu對象來獲取這個actionViewClass對象
eg:
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();

for more information see  Creating a Search Interface.

2.處理Action View的點擊事件
由於系統會在點擊item時會展開顯示這個ActionView,當在onOptionsItemSelected方法中返回true的時候(代表有用戶自定義),
默認的展開動作取消。
   如果需要自行展開,可以使用MenuItem中的 expandActionView()和collapseActionView()
如果移動設備提供搜索鍵,則需要重寫onKeyUp方法中監聽KEYCODE_SEARCH事件,然後調用方法展開。
可以通過setOnActionExpandListener()方法來監聽指定的MenuItem的展開和摺疊
6、添加Action provider
    a.ShareActionProvider
   
    b.Using the ShareActionProvider
 當顯示這些選項的時候,會根據用戶使用的次數來排序,這些歷史文件保存在DEFAULT_SHARE_HISTORY_FILE_NAME,可以通過
 setShareHistoryFileName()方法來設置各自的歷史文件(傳入一個xml文件名:custom_share_history.xml)
 
 添加的步驟:
 在menu的xml佈局文件中添加 android:actionProviderClass="android.widget.ShareActionProvider"
 然後使用響應的對象setShareIntent()來設置要啓動的應用的Intent。
 
 
c.自定義Action provider
 繼承ActionProvider這個類,然後按需實現以下方法:
ActionProvider() 構造方法,傳入一個Context對象
onCreateActionView() 返回action item的視圖 (通常使用構造中的context對象來膨脹xml佈局,然後返回),在這裏進行
                    action item的事件的處理。
onPerformDefaultAction()在overflow欄中選中的時候調用,提供一個默認的action
當actionprovider 提供一個子菜單的時候,系統會調用onPrepareSubMenu() ,這個時候系統不會調用onPerformDefaultAction()


7、添加Navigation Tabs
    a.先使用setNavigationMode(NAVIGATION_MODE_TABS),設置爲navigation的模式
b.新建ActionBar.Tab對象,並設置setTabListener(), setText() and/or setIcon()
c.把創建的Tab對象添加到ActionBar中。

ps:在activity中要保存當前選中的tab,使用方法 getSelectedNavigationIndex()獲取position

例子:demo下面的NavigationTabActionBarActivity.java


8、添加Drop-down Navigation
   作爲另一種Navigation的模式
   添加步驟:
   
      a.把模式設置成:setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
 b.創建一個SpinnerAdapter,提供下拉列表的選項的顯示視圖和數據
 c.實現ActionBar.OnNavigationListener 取處理選中下拉列表中的選項的事件
 d.setListNavigationCallbacks(mSpinnerAdapter, mNavigationCallback)把適配器跟事件處理綁定在一起
 
 例子;
 
9、ActionBar樣式的自定義,參見文檔Ui部分的ActionBar
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章