转自:http://zwkufo.blog.163.com/blog/static/2588251201132805532568/
Android3.0中ActionBar的新特性
1. ActionBar(活动栏)替代了显示在屏幕顶端的标题栏。主要负责显示菜单,widget,导航等功能,主要包括:
@ 显示选项菜单中的菜单项到活动栏;
@ 添加可交互的视图到活动栏作为活动视图;
@ 使用应用的图标作为活动项,代表返回home或者向上等重要操作;
@ 提供标签导航,方便不同的Fragment之间切换;
@ 提供下拉导航功能。
2. Android3.0针对ActionBar新增的类如下:
ActionBar
ActionBar.LayoutParams
android:layout_gravity:设置控件本身相对于父控件的显示位置。(而android:gravity:设置的是控件自身上面的内容位置)
ActionBar.OnMenuVisibilityListener
onMenuVisibilityChanged(boolean isVisible)
ActionBar.OnNavigationListener
onNavigationItemSelected(int itemPosition, long itemId)
ActionBar.Tab
ActionBar.TabListener
onTabReselected(ActionBar.Tab tab, FragmentTransaction ft)
onTabSelected(ActionBar.Tab tab, FragmentTransaction ft)
onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft)
导航的三种显示模式:
NAVIGATION_MODE_STANDARD
NAVIGATION_MODE_LIST
NAVIGATION_MODE_TABS
3. 具体功能的实现
1) 隐藏、显示、删除活动栏
ActionBar actionBar = getActionBar();
actionBar.hide();
//actionBar.show(); // 显示活动栏
<!-- 删除活动栏 -->
<activity android:theme="@android:style/Theme.Holo.NoActionBar">
2) 添加活动项到活动栏
i. 利用menu目录下的布局文件,对于你想添加的每个活动项,你必须添加一个菜单项到选项菜单,并设置菜单项作为活动项;
Android3.0中ActionBar的新特性 - 乂乂 - 一个人,一支烟 ·~~
例如下图的xml布局:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_save"
android:icon="@drawable/ic_menu_save"
android:title="@string/menu_save"
android:showAsAction="ifRoom|withText" />
<!-- 有四种属性,ifRoom,never,withText,always -->
<item android:id="@+id/menu_delete"
android:icon="@drawable/ic_menu_delete"
android:title="@string/menu_delete"
android:showAsAction="ifRoom|withText" />
<item android:id="@+id/menu_edit"
android:icon="@drawable/ic_menu_edit"
android:title="@string/menu_edit"
android:showAsAction="ifRoom|withText" />
</menu>
ii. 直接在Activity里的onCreateOptionsMenu里实现,例如:
public boolean onCreateOptionsMenu(Menu menu) {
menu.add("Normal item");
MenuItem actionItem = menu.add("Save");
actionItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
actionItem.setIcon(android.R.drawable.ic_menu_save);
return true;
}
响应事件的调用和Options Menu的一样,都是
public boolean onOptionsItemSelected(MenuItem item)
3) 添加可交互的视图到活动栏作为活动视图
你可以把widget作为活动项添加到活动栏(如下图),有两种方式实现;
Android3.0中ActionBar的新特性 - 乂乂 - 一个人,一支烟 ·~~
第一种是通过布局文件;
<item android:id="@+id/menu_search"
android:title="Search"
android:icon="@drawable/ic_menu_search"
android:showAsAction="ifRoom"
android:actionLayout="@layout/searchview" />
第二种是通过指定活动视图的全修饰名,即包名和类名;
<item android:id="@+id/action_search"
android:title="@string/action_bar_search"
android:icon="@android:drawable/ic_menu_search"
android:showAsAction="always"
android:actionViewClass="android.widget.SearchView" />
4) 使用应用的图标作为活动项,代表返回home或者向上等操作
由于活动栏默认情况下,左边是应用的图标,接着是应用标题,我们可以利用它来处理一些经常且关键的操作,默认情况下应用的图标设置ID为android.R.id.home.
如下面的例子,是返回到home.
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case android.R.id.home:
Intent intent = new Intent(this,ActionBarDemo.class);
startActivity(intent);
break;
}
return super.onOptionsItemSelected(item);
}
5) 提供标签导航,方便不同的Fragment之间切换
活动栏可以显示标签,允许用户在不同的fragment之间切换。
Android3.0中ActionBar的新特性 - 乂乂 - 一个人,一支烟 ·~~
i. 确定布局中包含有tab关联的fragment的视图;
ii. 创建一个对ActionBar.TabListener的实现,并实现onTabSelected(Tab tab, FragmentTransaction ft), onTabUnselected(), and onTabReselected()方法;
iii. 在setContentView方法之后得到ActionBar,并设置导航模式为NAVIGATION_MODE_TABS.
final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
iv. 创建每一个tab为ActionBar,如下
iv-1. Create a new ActionBar.Tab by calling newTab() on the ActionBar.
iv-2. Add title text and/or an icon for the tab by calling setText() and/or setIcon().
iv-3. Declare the ActionBar.TabListener to use for the tab by passing an instance of your implementation to setTabListener().
v. Add each ActionBar.Tab to the Action Bar by calling addTab() on the ActionBar and passing the ActionBar.Tab.
Fragment artistsFragment = new ArtistsFragment();
actionBar.addTab(actionBar.newTab().setText(R.string.tab_artists).setTabListener(new TabListener(artistsFragment)));
6) 提供下拉导航功能
i. 利用下拉选择项和布局,构建SpinnerAdapter。
SpinnerAdapter mSpinnerAdapter = ArrayAdapter.createFromResource(this, R.array.action_list, android.R.layout.simple_spinner_dropdown_item);
ii. 实现ActionBar.OnNavigationListener,来记录用户选择list中项目的行为。
public boolean onNavigationItemSelected(int position, long itemId)
iii. 设置导航模式为ActionBar.NAVIGATION_MODE_LIST
ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
iv. 设置回调函数setListNavigationCallbacks()
actionBar.setListNavigationCallbacks(mSpinnerAdapter, mNavigationCallback);
7) 定制活动栏
i. setBackgroundDrawable (Drawable d),the drawable should be Nine-patch image, a shape, or a solid color, so the system can resize the drawable based on the size of the Action Bar (you should not use a fixed-size bitmap image).
ii. setDisplayUseLogoEnabled (boolean useLogo),由于应用的logo含有更多的信息,是否用应用的logo替换应用的图标
iii. The Action Bar has two standard themes, "dark" and "light". The dark theme is applied with the default holographic theme, as specified by the Theme.Holo theme.
iv. android:actionBarTabStyle( Style for tabs in the Action Bar)
v. android:actionBarTabBarStyle(Style for the bar that appears below tabs in the Action Bar)
vi. android:actionBarTabTextStyle(Style for the text in the tabs)
vii. android:actionDropDownStyle(Style for the drop-down list used for the overflow menu and drop-down navigation)
viii. android:actionButtonStyle(Style for the background image used for buttons in the Action Bar)
4. 总结:
1) 在屏幕或应用上,关键,操作频繁的动作,可以放到活动栏;
2) 帮助传达动作或位置信息的图标;
3) 用logo或者暗示性的图标作为home或者up等操作;
【内容来源于网上,无法查证作者,在此表示感谢·~~】
分享到:
相关推荐
android 3.0以下兼容actionbar例子,包括actionbar的tab
主要为大家详细解析了Android3.0 ActionBar导航标题栏的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
android中自定义actionbar的源码,详情地址:http://blog.csdn.net/zhong1113/article/details/46332563
自适应Android 3.0以下api的ActionBar,如果系统在3.0以上则使用android系统自带的ActionBar
该资源中包含了几个用actionbar实现的小例子,从简单到高级,简单易懂,喜欢的下载!
android的actionbar开发,以及使用radio button代替Tab
android actionBar PPT
自定义actionbar,定义一个actionbar模板,以便在程序中所有的activity中都能引用
在android3.0版本之前使用ActionBar,出现了很多问题,比如overflow出不来,菜单项显示只有文字没有图标等,本例子解决了这些问题,在android2.3和android4.0测试通过
Android 实现自定义ActionBar(仿qq)
Android SupportV7 ActionBar Demo
android actionbar通用组件,帮组开发者减少工作量
ActionBar提供若干有用的特性,其中包括了: ① 作为“action选项”,在ActionBar上直接显示“选项菜单”(OptionsMenu)—— 为用户进行某项操作提供直接的访问; 作为“action项”没有出现在ActionBar上得菜单...
使用Android-support-v7实现完全兼容Android 3.0以下系统,全面展示了怎么使用ActionBarActivity,绝对原创!
用ActionBar取代Android3.0之前的顶部标题栏,效果更炫,功能更丰富。项目中包含:源码+效果图+项目结构图 效果见博客地址:http://blog.csdn.net/yangyu20121224/article/details/9042387
android drawerLayout+actionbar
Android自定义ActionBar,常用的样式
Android ActionBar自定义布局
android 低版本实现ActionBar ,actionBar 在android3.0以下经过处理之后才可以使用