&&&&&& 前面一个系列中讲的是fragment的内容,android 3.0中除fragment外,action bar同样也是一个很重要的知识点。我们经常使用action bar来替代传统的标题栏。如果是android平板设备的话,屏幕越大,通过action bar设计的标题可以展示的内容越丰富,操作更加便捷。
action bar主要功能包含:
1. 显示选项菜单。
2. 提供标签页的切换方式的导航功能,可以切换多个fragment。
3. 提供下拉的导航条目。
4. 提供交互式活动视图代替选项条目。
5. 使用程序的图标作为返回home主屏或向上的导航操作。
&&&&&& 提示:在你的程序中应用actionbar需要注意几点,sdk和最终运行的固件必须是android 3.0即honeycomb,在androidmanifest.xml文件中的uses-sdk元素中加入android:minsdkversion 或android:targetsdkversion,类似:
- <&manifest&xmlns:android="http://schemas.android.com/apk/res/android"&&
- package="eoe.android.cwj"&&
- android:versioncode="1"&&
- android:versionname="1.0">&&
- <&uses-sdk&android:minsdkversion="honeycomb"&/>&&
- <&application&...&>&&
- <&/application>&&
- <&/manifest>&&
&&&&&& 如果需要隐藏action bar可以在你的activity的属性中设置主题风格为notitlebar在你的manifest文件中,下面的代码在3.0以前是隐藏标题,而在3.0以后就是隐藏actionbar了,代码为:
- <&activity&android:theme="@android:style/theme.notitlebar">&&
&&&&&& 一、添加活动条目 action items
对于活动条目大家可以在下图看到android 3.0的标题右部分可以变成工具栏,下面的save和delete就是两个action items活动条目。
- <?xml&version="1.0"&encoding="utf-8"?>&&
- <menu&xmlns:android="http://schemas.android.com/apk/res/android">&&
- <&item&android:id="@+id/menu_add"&&
- android:icon="@drawable/ic_menu_save"&&
- android:title="@string/menu_save"&&
- android:showasaction="ifroom|withtext"&/>&&
- </menu>&&
&&&&&& 而其他代码类似activity中的menu,比如:
- @override&&
- public&boolean&onoptionsitemselected(menuitem&item)&{ &&
- switch&(item.getitemid())&{ &&
- case&android.r.id.home: &&
- //&当action&bar的图标被单击时执行下面的intent &&
- intent&intent&=&new&intent(this,&android123.class); &&
- startactivity(intent); &&
- break; &&
- } &&
- return&super.onoptionsitemselected(item); &&
- }&&
&&&&&& 对于actionbar的创建,可以在你的activity中重写onstart方法:
- @override&&
- protected&void&onstart()&{ &&
- super.onstart(); &&
- actionbar&actionbar&=&this.getactionbar(); &&
- actionbar.setdisplayoptions(actionbar.display_home_as_up,&actionbar.display_home_as_up); &&
- }&&
&&&&&& 调用getactionbar方式在你的activity的oncreate中时需要注意必须在调用了setcontentview之后。
二、添加活动视图 action view
&&&&&& 对于actionview,我们可以在menu的布局文件使用中来自定义searchview布局,如下:
- <item&android:id="@+id/menu_search"&&
- android:title="search"&&
- android:icon="@drawable/ic_menu_search"&&
- android:showasaction="ifroom"&&
- android:actionlayout="@layout/searchview"&/>&&
&&&&&& 也可以直接指定android系统中的searchview控件,那么这时menu_search的代码要这样写:
- <item&android:id="@+id/menu_search"&&
- android:title="search"&&
- android:icon="@drawable/ic_menu_search"&&
- android:showasaction="ifroom"&&
- android:actionviewclass="android.widget.searchview"&/>&&
&&&&&& 大家注意上面的两种方法中一个属性是actionlayout制定一个layout xml布局文件,一个是actionviewclass指定一个类,最终调用可以在activity中响应oncreateoptionsmenu方法映射这个menu布局即可。
- @override&&
- public&boolean&oncreateoptionsmenu(menu&menu)&{ &&
- getmenuinflater().inflate(r.menu.options,&menu); &&
- searchview&searchview&=&(searchview)&menu.finditem(r.id.menu_search).getactionview(); &&
- return&super.oncreateoptionsmenu(menu); &&
- }&&
&