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文件
 

 android:title="@string/menu_search"
 android:icon="@drawable/ic_menu_search"
 android:showAsAction="ifRoom|collapseActionView"
 android:actionViewClass="android.widget.SearchView" />

在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
 
 

你可能感兴趣的:(android)