`
huaxin803
  • 浏览: 113282 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android 用户界面---操作栏(Action Bar 一)

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

操作栏的主要目的是:

1.为了标识应用程序的商标和用户的位置而提供的一个专用空间。

这个空间的左边是应用的图标或logo,以及Activity的标题。但是,如果是像当前选择的标签这样的标识当前View对象的导航标签,你可以选择删除Activity的标题。

2.在不同的应用程序之间提供一致的导航和视觉体验。

操作栏提供了用于Fragment间切换的内置导航标签。它还提供了一个用于替换导航模式或优化当前视觉效果(如按照不同条件排序的列表)的下拉列表。

3.突出Activity的关键操作(如“搜索”、“创建”、“共享”,等),并且在可预见的方法内给用户提供快捷的访问。

对于关键的用户操作,你能够通过把选项菜单项作为操作项直接放到操作栏中,从而提供快捷的访问。操作项目还能提供一个操作窗口,这个窗口给更直接的操作行为提供一个嵌入的窗口部件。没有改进成操作项的菜单项在溢出菜单中还是有效的,用户既可以使用设备上的菜单按钮(设备上有按钮的时候),也可以使用操作栏中的溢出菜单按钮(当设备上不包含菜单按钮时)来显示这些操作项目。

图1. Honeycomb Gallery应用中的操作栏,从左边开始,依次是logo、导航选项标签和操作项(在右边插入的一个溢出菜单按钮)。

注意:如果你在查找有关上下文操作栏的信息,请看“菜单”指南。

添加操作栏

从Android3.0(API级别 11)开始,操作栏被包含在所有的使用Theme.Hole主题的Activity(或者是这些Activity的子类)中,当targetSdkVersion或minSdkVersion属性被设置为“11”或更大的数值是,这个主题是默认的主题一。如:

<manifest ... >
    <uses-sdk android:minSdkVersion="4"
              android:targetSdkVersion="11" />
    ...
</manifest>

在这个例子中,应用程序要求最小的API版本级别是4(Android 1.6),但是它还要求了目标API版本级别是11(Android 3.0)。这样,当应用程序运行在Android3.0或更高的版本上时,系统就会给每个Activity应用全景主题,这样,每个Activity就会包含操作栏。

如果你想使用ActionBar API来进行添加导航模式和修改操作栏样式的操作,你应该把minSdkVersion属性设置为“11”或更大的值。如果想要你的应用程序支持更旧的Android版本,那么在支持API 级别 11或更高版本,但却依然运行着旧的Android版本的设备上,就要使用受限受限droid如果你运行咋是默认的主题一、。在溢出菜单中是有效的的ActionBar API集。

删除操作栏

对于特殊的Activity,如果你不想要操作栏,把Activity的主题设置为Theme.Holo.NoActionBar就可以了,如:

<activity android:theme="@android:style/Theme.Holo.NoActionBar">

你也能够通过调用hide()方法在运行时隐藏操作栏,如:

ActionBar actionBar = getActionBar();
actionBar.hide();

当操作栏隐藏时,系统会调整你的Activity来填充当前有效的屏幕空间。你能够使用show()方法来再次显示操作栏。

在隐藏和删除操作栏时,要当心为了适应被操作栏占用的空间而导致的Activity的重新布局。如果你的Activity有规律的隐藏和显示操作栏,你可能想要使用覆盖模式。覆盖模式在Activity的顶部描画操作栏,而不是在它们所拥有的屏幕的区域。这样,在操作栏隐藏和重新显示时,你的布局保持不变。要使用覆盖模式,就要给Activity创建一个主题,并且把android:windowActionBarOverlay属性设置为true。

提示:如果你有一个删除了操作栏的定制化的Activity主题,它把android:windowActionBar样式属性设置为false。但是,如果你使用了删除操作栏的一个主题,那么,创建窗口将不允许操作栏再显示,因此,你不能在以后给这个Activity添加操作栏---因为getActionBar()方法将返回null。

添加操作项

有些时候,你可能想要让用户直接访问选项菜单中的一个项目,因此你要把应该在操作栏中显示的菜单项作为一个操作项来声明。操作项能够能够包含一个图标或文本标题。如果一个菜单项不作为一个操作项显示,那么系统就会把它放到溢出菜单中。溢出菜单既可以通过设备的Menu按钮来显示,也可以操作栏中一个额外的按钮来显示。

当Activity首次启动时,系统会调用onCreateOptionsMenu()方法给你的Activity组装操作栏和溢出菜单。在这个回调方法中应该加载在XML文件中定义的菜单项资源,如:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_activity, menu);
    return true;
}

pic

图2. 带有图标和文本标题的两个操作项,和溢出菜单按钮。

在XML文件中,你能够通过给<item>元素声明android:showAsAction=”ifRoom”s属性,请求把一个菜单项作为一个操作项来显示。用这种方式,只在有有效的空间时,菜单项才能显示在操作栏中。如果没有足够的空间,这个菜单项会显示在溢出菜单中。

如果你的菜单项支持标题和图标---带有android:title和android:icon属性---那么默认情况下,操作项仅显示图标。如果你要显示文本标题,就要给android:showAsAction属性添加withText设置,如:

<?xml version="1.0" encoding="utf-8"?>
<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" />
</menu>

注意:withText值示意操作栏要显示文本标题。操作栏会尽可能的显示这个标题,但是,如果图标有效并且受到操作栏空间的限制,文本标题有可能显示不全。

当用户选择了一个操作项时,Activity会接收一个onOptionsItemSelected()的回调,要把android:id属性支持的ID传递给这个方法。

给每个菜单项定义android:title属性是至关重要的,即使你没有给操作项声明标题。原因如下:

1.如果操作栏中没有足够的空间来显示操作项,那么菜单项就会显示在溢出菜单中,并仅显示标题;

2.屏幕阅读器要给视障用户朗读菜单项标题;

3.如果仅用图标来显示操作项,那么,用户能够长按这个项目,用操作项的标题来显示提示信息。

注意:如果你添加源于Fragment对象的菜单项,那么通过Fragment类的onCreateOptionsMenu回调方法,当用户选择其中一个Fragment菜单项时,系统会对用那个Fragment对象对应的onOptionsItemSelected()方法。但是,Activity有机会首先处理这个事件,因为系统在调用对应的Fragment对象的onOptionsItemSelected()方法之前会调用Activity的相同的回调方法。

你也能够声明一个菜单项,让它始终作为操作项来显示,而不是在空间不足时就放到溢出菜单中。大多数情况下,你不应该使用always属性值来强制一个菜单项始终显示在操作栏中,但是,当提供了一个不给溢出菜单提供默认操作的操作窗口时,你就需要始终显示一个菜单项。但是要警惕,太多的操作项会创建一个混乱的UI,并且会导致窄屏设备上的布局问题。最好的方法是使用ifRoom属性值,它允许系统在操作栏空间不足的时候,把菜单项移到溢出菜单中。

分享到:
评论

相关推荐

    android-support-v4 android-support-v7-appcompat

    Action Bar是Android应用中一种重要的UI元素,它提供了一种统一的导航和操作方式。`appcompat-v7`库通过引入一个自定义的ActionBar实现,使得开发者可以为旧版本的Android设备添加Action Bar功能。此外,它还包含了...

    android-support-v4+android-support-v7-appcompat组合包

    `android-support-v7-appcompat.jar` 是Android AppCompat库的一部分,这个库主要目的是为了向后兼容Action Bar特性,Action Bar在Android 3.0(API级别11)以上版本引入,但通过AppCompat库,开发者可以在更低版本...

    android-support-v7和android-support-v7-recyclerview的classes.jar

    它提供了一个自定义的`Activity`类——`AppCompatActivity`,该类实现了对Material Design风格的支持,包括Action Bar、ToolBar以及主题颜色等,使得开发者可以在低版本Android设备上实现现代Android界面的风格。...

    android-support-v7-appcompat.zip

    在Android开发中,`android-support-v7-appcompat`库是一个至关重要的组件,它极大地扩展了Android API的功能,使得开发者能够在更广泛的设备上实现一致的用户界面和功能。这个库是Android Support Library系列的一...

    android支持包:android-support-v4

    AppCompat库还包含一个兼容的ActionBar,为低版本的Android提供了类似的新版Action Bar的功能。 **AsyncTask** AsyncTask是Android用于简化后台操作和UI更新的工具,但仅在API级别11以上可用。`android-support-v4...

    android_action-bar

    Action Bar是Android 3.0(API级别11)引入的,用于提供一个统一的用户界面元素,它包含了应用的Logo、标题、菜单项以及可扩展的操作。Action Bar的设计旨在提高应用的可发现性和可用性,让用户更容易地与应用进行...

    Action bar 操作栏

    在Android应用开发中,Action Bar(操作栏)是界面设计中的一个重要组成部分,它为用户提供了一种统一且高效的交互方式。这个部分将详细讲解Action Bar的基本概念、功能、设计原则以及如何在代码中实现。 一、...

    android-support-v4.jar,android-support-v7-appcompat.jar

    这个库中最显著的特性就是实现了ActionBar,使得开发者能够在旧版本的Android上使用类似于新版本中的Action Bar,提供统一的导航和操作界面。除此之外,它还支持Toolbar,这是一个可定制的视图,可以作为Activity的...

    blog.rar_android_android-support-v4_blog

    3. **AppCompatActivity**:基于`android.support.v7.app.AppCompatActivity`,提供了对ActionBar的支持,使得在API 14以下的版本也能使用Action Bar,提供统一的UI体验。 4. **PagerAdapter**:用于创建滑动界面,...

    Android-ObservableScrollView-master

    "Android-ObservableScrollView-master"是一个非常实用的开源库,它专注于解决一个常见的设计问题:如何优雅地处理ScrollView或NestedScrollView的滚动事件,并与诸如Toolbar(也称为Action Bar)这样的组件进行交互...

    自定义Android Action Bar的布局

    Action Bar是Android 3.0(API级别11)引入的一个特性,目的是为了提供一种更统一的用户界面设计。在Android 4.0(API级别14)及以后的版本中,它已经成为系统默认样式的一部分。即使在更早的版本,通过使用兼容库...

    android-support-v7.jar

    2. **ActionBar**:此库引入了对ActionBar的兼容性支持,ActionBar是Android 4.0中引入的一个重要UI组件,它提供了导航、搜索和其他操作的界面。在更早的Android版本中,开发者需要自己实现类似功能,而使用此库可以...

    android-actionbar-master.zip_android_android actionbar组件

    Action Bar为用户提供了一种统一的界面风格,使其与Android系统的其他应用保持一致,同时也提高了用户体验。本资源“android-actionbar-master.zip”提供了一个通用的Android ActionBar实现,旨在帮助开发者更高效地...

    android-actionbar-for-2.x.x.7z

    Action Bar是Android系统中的一种UI组件,主要用在应用程序的顶部,用于展示应用的标识、提供导航以及常用操作。在Android 3.0(API级别11)及更高版本中,Action Bar是默认界面的一部分,但在早期版本如2.x(API...

    android-support-v4+v7

    此外,`appcompat-v7`还包含了对ToolBar、FloatingActionButton、Snackbar等Material Design组件的兼容,使得开发者能为老版本的Android设备提供现代感的用户界面。 除了`appcompat-v7`,`android-support-v7`库还...

    android-support-v7-appcompat【2分】

    1. **ActionBar**: 提供了一种在早期Android版本上实现类似Action Bar的界面元素,它包含了下拉菜单、搜索框和操作按钮等功能,显著提升了应用的导航体验。 2. **主题兼容性**: 允许开发者在低版本Android上使用...

    在android主界面模拟iphone的bar

    在Android平台上,模拟iPhone的bar是一项有趣的挑战,它涉及到对用户界面(UI)设计的理解以及对Android系统特性的深入挖掘。这个项目的核心是创建一个类似于iPhone底部Dock栏的组件,该组件包含可拖动的快捷方式,...

    Android-Glass-Action-Bar-Sample

    标题“Android-Glass-Action-Bar-Sample”表明这是一个关于Android应用开发的项目示例,主要关注的是在Android设备上实现类似Google Glass的Action Bar设计。Action Bar是Android系统中的一个关键组件,它提供了应用...

    Android SDK 2.2-4.4

    - **行动栏(Action Bar)**:提供统一的导航和操作方式,简化了用户界面。 - **多窗口任务切换**:支持多窗口任务切换,提高了生产力。 - **碎片(Fragments)**:允许在单个活动中展示多个视图,适应不同屏幕尺寸...

Global site tag (gtag.js) - Google Analytics