活动栏—Action Bar

活动栏(ActionBar)是Android 3.0之后增加的新组件。它用于替代传统的标题栏。它提供的主要功能包括以下几个。

(1)直接显示选项菜单。

(2)可添加交互视图到活动栏作为活动视图(Action View)。

(3)用程序的图标作为返回Home或者向上的导航操作。

(4)提供标签导航功能。

(5)提供下拉导航功能。

下面通过一个例子具体演示活动栏前3个功能的基本用法。

通过选项菜单资源文件actionitem.xml我们定义活动栏上的选项菜单和活动视图,而程序图标的单击响应也是作为一项菜单item单击事件处理的。

actionitem.xml

1.   <?xml version="1.0" encoding="utf-8"?>

2.   <menu xmlns:android="http://schemas.android.com/apk/res/android">

3.   <item android:id="@+id/actionview"

4.   android:icon="@drawable/ic_launcher"

5.   android:title="活动视图"

6.   android:actionViewClass="android.widget.SearchView"

7.   android:showAsAction="always" />

8.   <item android:id="@+id/optionitem1"

9.   android:icon="@drawable/icon"

10.  android:title="选项1"

11.  android:showAsAction="ifRoom|withText" />

12.  <item android:id="@+id/optionitem2"

13.  android:icon="@drawable/ic_launcher"

14.  android:title="选项2"

15.  android:showAsAction="ifRoom|withText" />

16.  <item android:id="@+id/optionitem3"

17.  android:icon="@drawable/icon"

18.  android:title="子菜单">

19.  <menu>

20.  <item android:id="@+id/subitem1"

21.  android:title="子菜单项1" />

22.  <item android:id="@+id/subitem2"

23.  android:title="子菜单项2" />

24.  </menu>

25.  </item>

26.  </menu>

这个选项菜单文件和之前的例子很相似,只是在每个item项里增加了android:showAsAction属性。这个属性用于申明菜单项作为action item时的显示特性。有4种属性。

(1)ifRoom:只有当ActionBar上有空间时才显示这个菜单项,如果ActionBar上没有足够的空间,那么 Action Item会被放置于“更多”菜单项中。

(2)never:此属性的item显示在“更多”菜单项中。

(3)withText:此属性要求action item同时显示图标和文字,无此属性将只显示图标。

(4)always:此属性申明action item显示在活动栏中,不放入“更多”中。

第3~7行我们定义了一个活动视图(action view),活动视图实际上是出现在ActionBar上的视图组件。在这个例子里,我们为菜单项添加一个活动视图来提供搜索组件(SearchView)。android:actionViewClass属性使用了SearchView类的完全限定名。至于活动视图里的控件,我们可以通过代码方式获取并添加监听器。

下面是用这个资源文件实现的活动栏的效果图。

▲图10-18  活动栏效果图

图10-18中我们看到了活动栏上的组件排列结构:最左边是应用图标和标题,然后是活动视图,最右边是选项菜单。选项菜单只在活动栏上显示了两项,余下的在“更多”内。

下面是单击“更多”后显示的“子菜单项目”,如图10-19所示。

▲图10-19  单击“更多”后的效果图

单击子菜单后,弹出子菜单的效果图如图10-20所示。

▲图10-20  弹出子菜单的效果图

下面是活动栏相关的Java代码。

1.   @Override

2.   public void onCreate(Bundle savedInstanceState) {

3.   super.onCreate(savedInstanceState);

4.   setContentView(R.layout.main);

5.   ActionBar actionBar = this.getActionBar();

6.   actionBar.setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP, ActionBar.DISPLAY_
     HOME_AS_UP); }

7.   @Override

8.   public boolean onCreateOptionsMenu(Menu menu) {

9.   super.onCreateOptionsMenu(menu);

10.  getMenuInflater().inflate(R.menu.optionmenu, menu);

11.  SearchView searchView =
(SearchView) menu.findItem(R.id.actionview).getActionView();

12.  return true;}

13.  @Override

14.  public boolean onOptionsItemSelected(MenuItem item)

15.  {

16.  switch (item.getItemId())

17.  {

18.  case android.R.id.home:

19.  Toast.makeText(this, "单击了图标", Toast.LENGTH_SHORT).show();

20.  return true;

21.  case R.id.optionitem1:

22.  Toast.makeText(this, "单击了选项1", Toast.LENGTH_SHORT).show();

23.  return true;

24.  case R.id.optionitem2:

25.  Toast.makeText(this, "单击了选项2", Toast.LENGTH_SHORT).show();

26.  return true;

27.  case R.id.optionitem3:

28.  Toast.makeText(this, "单击了选项3", Toast.LENGTH_SHORT).show();

29.  return true;

30.  case R.id.subitem1:

31.  Toast.makeText(this, "单击子菜单选项1", Toast.LENGTH_SHORT).show();

32.  return true;

33.  case R.id.subitem2:

34.  Toast.makeText(this, "单击子菜单选项2", Toast.LENGTH_SHORT).show();

35.  return true;

36.  default:

37.  return super.onOptionsItemSelected(item);

38.  } }

第5、6行获取到活动栏,并设置了单击图标为用户提供“向上”导航功能,此时系统将绘制带箭头的应用图标。如果程序由多个Activity组成,这将为用户简化导航向上的功能。

第7~12行是选项菜单的创建函数,在这里就是为活动栏创建选项菜单。

第11行从菜单资源中通过findItem获取活动视图searchView。这样我们可以为searchView设置监听函数进行相关操作。

第13~37行是选项菜单的item选项响应函数,和上一节类似,只是多了android.R.id.home这一个item,这个正是活动栏上应用图标的id,通过它我们能处理图标单击响应。

时间: 2024-08-10 19:16:54

活动栏—Action Bar的相关文章

[Android系列—] 4. 添加操作栏(Action Bar)

前言 操作栏是最重要的设计元素之一,使用它来实现你的应用程序活动.通过提供多种用户界面功能, 使应用程序快速和其他的Andorid应用程序一致, 以便被用户熟悉和接受. 主要功能包括: 1. 标识你的应用程序,指示在应用程序的用户的位置. 2. 能很方便的操作重要的功能(像搜索功能) 3. 导航和视图切换功能(使用制表符或下拉列表) 类似的效果如下: 设置操作栏 在基本的使用状况是, 操作栏在左边显示活动的标题和应用的图标. 类似: 设置一个基本的操作栏需要你使用的应用活动主题支持操作栏, 这和

Android中文翻译 - Adding the Action Bar 添加活动栏(action bar)

2014-10-28 张云飞VIR 翻译自:https://developer.android.com/training/basics/actionbar/index.html 添加活动栏(Adding the Action Bar) 译者注:我找不到更好的词汇翻译action bar,虽然我也认为 活动栏 不是个好的翻译,但总要有个中文名字.不过为了方便识别,本文仍继续使用英文的actionbar 活动栏action bar 是非常重要的设计元素之一,你可以为你的app中的activity来实

Adding the Action Bar

http://www.cnblogs.com/gcg0036/p/4321263.html 设置基本操作栏,要求应用程序使用适合该操作栏的活动主题.如何申请这样的主题取决于应用程序能支持的最低安卓版本. 从Android3.0(API级别11)开始,操作栏包含在所有使用 Theme.Holo主题(或者它的子类)的活动中.无论是 targetSdkVersion 还是minSdkVersion,当把属性设置为11或者更大时Theme.Holo是默认的主题. 注意:如果您已经创建了自定义主题,要确保

Android Action Bar 详解篇 .

作者原创,转载请标明出处:http://blog.csdn.net/yuxlong2010 作为Android 3.0之后引入的新的对象,ActionBar可以说是一个方便快捷的导航神器.它可以作为活动的标题,突出活动的一些关键操作(如“搜索”.“创建”.“共享”等).作为菜单的灵活使用,还可以实现类似TabWidget的标签功能以及下拉导航的功能,系统能够很好根据不同的屏幕配置来适应ActionBar的外观,配合起Fragemtn可谓是十分强大. 那么,对于今天的主角ActionBar怎么去添

Action Bar

简介 action bar 是一个功能窗口,用于标识应用程序和用户的位置,并提供给用户一些操作和导航模式.你应该在大多数需要提供用户操作或导航的activities 时使用它.因为action bar 为用户在不同的屏幕上提供了一致的界面,并且它优雅的适应类不同的系统外观.你可以通过使用ActionBar 类来控制action bar . Action Bar 的主要目标: 提供一个专有的空间用于显示应用程序的标识或用户的位置 在不同的application上提供一致的导航和细化视图 突出显示一

Action Bar详解(二)

在Android3.0之后,Google对UI导航设计上进行了一系列的改革,其中有一个非常好用的新功能就是引入的ActionBar,他用于取代3.0之前的标题栏,并提供更为丰富的导航效果. 一.添加ActionBar 1.不需要导入ActionBar,因为在android3.0或者以上版本中,ActionBar已经默认的包含在Activity中2.在Android3.0的默认主题“holographic”中,已经创造了ActionBar3.当android:minSdkVersion 或者 an

Action bar的菜单栏

Action bar允许你为与当前应用上下文相关的最重要的action items添加action按钮.那些直接显示在action bar上的icon或者文字都被称作action buttons.那些不适合action bar或者不是那么重要的Actions将会被隐藏在action overflow(译者注:action bar最右侧的垂直的三个点)里. 图1. 一个包含Search功能的action button和用来展示附加action的action overflow. 在XML文件中指定A

Android UI开发第二十四篇——Action Bar

Action bar是一个标识应用程序和用户位置的窗口功能,并且给用户提供操作和导航模式.在大多数的情况下,当你需要突出展现用户行为或全局导航的activity中使用action bar,因为action bar能够使应用程序给用户提供一致的界面,并且系统能够很好根据不同的屏幕配置来适应操作栏的外观.你能够用ActionBar的对象的API来控制操作栏的行为和可见性,这些API被添加在Android3.0(API 级别 11)中. Action bar的主要目的是: 1.  提供一个用于识别应用

Android: Action Bar的使用

一.初识Action Bar 1.定义: 翻译为操作栏,包括app图标,activity标题,选项菜单,向上按钮,TAB导航等等. 2.添加Action Bar 在现在Android Studio中,只要sdk版本大于11,则会默认添加.可以在AndroidManifest.xml中theme属性中选择noActionBar来不显示. 显示和隐藏Action Bar,API如下: //获取Action Bar ActionBar actionBar = getSupportActionBar()