《Android平板电脑开发秘籍》——3.9节技巧:创建一个下拉列表式的ActionBar

3.9 技巧:创建一个下拉列表式的ActionBar
Android平板电脑开发秘籍
在下拉列表式ActionBar 中,Action项以下拉列表的形式显示出来。为了在ActionBar中显示下拉列表,请调用它的setNavigationMode()方法,把ActionBar.NAVIGATION_ MODE_LIST值作为参数传入,如下所示:

actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

下拉列表以spinner方式显示一个可选项列表,用户只能从中选择一项。为了在下拉列表中显示Action项,将使用一个实现了SpinnerAdapter接口的适配器;比如,你可能会用ArrayAdapter、SimpleCursorAdapter 或任何BaseAdapter。在接下来要创建的应用程序中,将使用ArrayAdapter,因为它是最简单的适配器,可以作为Selection Widget的数据源来使用。可以按照以下步骤来创建应用程序。

(1)定义一个字符串数组,里面包含了需要显示在下拉列表中的字符串。

(2)创建一个ArrayAdapter,把数组中的元素显示为下拉列表项。也就是说,把数组元素封装或加入到spinner下拉列表项中。

(3)把ArrayAdapter赋给ActionBar,以显示Action项。为了把ArrayAdapter赋给ActionBar,并为显示出来的下拉项绑定事件侦听器,需调用setListNavigationCallbacks()方法,把适配器和OnNavigationListener作为参数传入,如下所示:

String[] items = new String[] { "Create", "Insert", "Update", "Search" };
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
   android.R.layout.simple_spinner_dropdown_item, items);
ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
actionBar.setListNavigationCallbacks(adapter, onNavigationItemSelected);

在上述代码中,定义了一个字符串数组items,里面包含了需要在下拉列表式ActionBar中显示的字符串。创建了名为adapter的ArrayAdapter,用于存放字符串数组项,并把数组元素加入到spinner下拉项中。

创建ActionBar对象actionBar,其导航模式设置为ActionBar.NAVIGATION_MODE_LIST。调用actionBar的setListNavigationCallbacks()方法,把ArrayAdapter、adapter和侦听器onNavigationSelected作为参数传入。给定了回调函数来处理下拉选择动作。如果用户在下拉列表中选择了一个Action项,将会调用事件处理方法onNavigationItemSelected,可以在里面编写代码来执行所需的动作。

下面尝试创建一个下拉列表式的ActionBar。首先创建一个名为ActionBarListApp的Android项目。在这个应用程序中,将以下拉列表的形式显示一些Action项。如果其中某项被选中,则相应的日志信息将会显示出来。请在Java Activity文件ActionBarListAppActivity.java中写下代码清单3-17所示的代码。

代码清单3-17 写入Java Activity 文件ActionBarListAppActivity.java的代码

package com.androidtablet.actionbarlistapp;
import android.os.Bundle;
import android.app.Activity;
import android.app.ActionBar.OnNavigationListener;
import android.app.ActionBar;
import android.widget.ArrayAdapter;
import android.util.Log;
public class ActionBarListAppActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        String[] items = new String[] { "Create", "Insert",
            "Update", "Search" };
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(
            this, android.R.layout.simple_spinner_dropdown_item, items);
        ActionBar actionBar = getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
        actionBar.setListNavigationCallbacks(adapter,
            onNavigationItemSelected);
    }
    OnNavigationListener onNavigationItemSelected = new
        OnNavigationListener() {
        @Override
        public boolean onNavigationItemSelected(int itemPosition,
            long itemId) {
            Log.d("Option ", String.valueOf(itemId) +
                " is selected");
            return true;
        }
    };
}

这里,你会注意到,当某个下拉列表中的Action项被选中时,将会调用onNavigation ItemSelected()方法。onNavigationItemSelected()方法的itemPosition和itemId参数包含了选中项的位置和ID。日志信息,即所选Action项ID将会显示出来。ID是连续赋值给下拉列表中的Action项的,起始值为0。为了启用ActionBar,请不要忘记把AndroidManifest.xml文件中的android:minSdkVersion属性值设置为11以上。

运行此应用程序,可以看到一个Spinner,如图3-9a所示。Spinner将显示下拉列表中的第一个选项:Create。默认的样式会把第一项显示为黑色,这在黑色的背景色下几乎是看不见的。请打开res/values文件夹中的styles.xml文件,添加一个名为MyActionBar的自定义Style,语句如下:

图3-9 Spinner的第一项几乎看不见(a),Spinner的第一项可以看清了(b),
选中列表后显示所有的Action项(c),被选中的列表项显示为第一项(d)

添加完Style后,styles.xml文件将会如代码清单3-18所示。

代码清单3-18 写入styles.xml文件的代码

<resources >
<style name="AppBaseTheme" parent="android:Theme.Light" >
</style>
<style name="AppTheme" parent="AppBaseTheme">
</style>
<style name="MyActionBar" parent="@android:style/Widget.
    Holo.Light.ActionBar" />
</resources>

为了在应用程序中应用这个Style,请打开AndroidManifest.xml文件,并把android:theme属性值设置如下:

android:theme="@style/MyActionBar"
这条语句将样式MyActionBar应用到应用程序中。现在屏幕输出将会如图3-9b所示。

当你点击Spinner时,将会打开一个下拉列表,所有的可选Action项将会显示出来(见图3-9c)。选中Action项Update,它将显示为Spinner的第一项(见图3-9d),以告知用户它被选中了。

图3-10给出了从下拉列表选中Update和Create Action项之后的日志信息。利用onNavigationItemSelected()方法的itemId参数把选中下拉项的ID显示出来。

时间: 2024-10-26 03:59:02

《Android平板电脑开发秘籍》——3.9节技巧:创建一个下拉列表式的ActionBar的相关文章

《Android平板电脑开发秘籍》——3.4节技巧:在ActionBar中显示Action项

3.4 技巧:在ActionBar中显示Action项 Android平板电脑开发秘籍 为了在ActionBar中显示Action项,需要给菜单项添加android:showAsAction属性,菜单项定义于Menu文件中.showAsAction属性决定了如何显示Action项.showAsAction属性可以是以下值. always--在ActionBar中显示此Action项. ifRoom--仅当空间允许时,才在ActionBar中显示此Action项.如果没有足够的空间,此项将显示在O

《Android平板电脑开发秘籍》——3.2节技巧:显示或隐藏ActionBar

3.2 技巧:显示或隐藏ActionBar Android平板电脑开发秘籍 为了在运行时显示或隐藏ActionBar,可以使用其show和hide方法,如下所示: ActionBar actionBar = getActionBar(); actionBar.hide(); // It hides the ActionBar actionBar.show(); // It makes the ActionBar visible 这里,调用getActionBar()方法获取了ActionBar对

《Android平板电脑开发秘籍》——3.5节技巧:点击应用程序图标后跳转至应用程序首页

3.5 技巧:点击应用程序图标后跳转至应用程序首页 Android平板电脑开发秘籍 如果用户点击了ActionBar内的Logo或图标,将会跳转至应用程序首页.应用程序首页的意思是应用程序的主Activity,即Activity栈的根成员. 默认情况下,显示在ActionBar中的Logo或图标是不能被点击的.为了让Logo或图标能被点击,必须调用ActionBar的setHomeButtonEnabled()方法,并把Boolean值True传入,如下所示: actionBar.setHome

《Android平板电脑开发秘籍》——3.7节技巧:在ActionBar中显示子菜单

3.7 技巧:在ActionBar中显示子菜单 Android平板电脑开发秘籍 为了能在ActionBar中显示显示子菜单,需要将子菜单项分组后放入一个 标签中,并将其嵌入欲与子菜单关联的Action项中.让我们假定,你需要创建Create和Update两个Action项.当用户点击Create项时,将会弹出一个子菜单,显示3个子菜单项Create Invoice.Create Customer和 Create Product.为了理解如何定义Action项的子菜单,请新建一个名为ActionB

《Android平板电脑开发秘籍》——3.10节小结

3.10 小结Android平板电脑开发秘籍在本章中,我们见识了ActionBar在显示程序主要Action时的用途,学习了显示和隐藏ActionBar.理解了各种组件的运作,了解了在ActionBar中显示Action项和Action View的过程.还学习了如何在ActionBar中显示子菜单以及如何创建Tab页式和下拉列表式的ActionBar. 下一章将学习自API 11开始引入的新增Widget.你将学习通过CalendarView在Android应用程序中显示日历.通过NumberP

《Android平板电脑开发秘籍》——3.6节技巧:在ActionBar中显示Action View

3.6 技巧:在ActionBar中显示Action ViewAndroid平板电脑开发秘籍为了更便捷地执行Action,Action View提供了内嵌的控件.从本质上说,Action View允许在ActionBar内放入一个自定义View.Android应用程序最常用的Action View就是SearchView.SearchView提供了一个用户界面,以便输入搜索请求并提交给搜索Provider.如果存在可用的建议项或者结果项,它还能把它们列出来,以便用户能够从中选择.为了能侦测到Se

《Android平板电脑开发秘籍》——3.3节技巧:理解ActionBar组件

3.3 技巧:理解ActionBar组件Android平板电脑开发秘籍ActionBar可由以下组件组成. 应用程序的图标/Logo--显示在ActionBar的左上角.Activity标题--显示ActionBar的标题.Tab--如果导航模式设置为Tab,则显示ActionBar Tab(见图3-1中).下拉列表--如果导航模式设置为list navigation,则以下拉列表的方式显示Action项(见图3-1下).Action项--显示应用程序的各种功能.为了调用一个模块或者执行一项任务

《Android平板电脑开发秘籍》——导读

目 录 第1章 Android平板电脑应用程序概述第2章 Fragment第3章 Action中的ActionBar 3.1 技巧:理解菜单和ActionBar之间的区别3.2 技巧:显示或隐藏ActionBar3.3 技巧:理解ActionBar组件 3.4 技巧:在ActionBar中显示Action项3.5 技巧:点击应用程序图标后跳转至应用程序首页 3.6 技巧:在ActionBar中显示Action View 3.7 技巧:在ActionBar中显示子菜单 3.8 技巧:创建一个Tab

《Android 平板电脑开发实战详解和典型案例》——滑动式抽屉—— SlidingDrawer

2.7 滑动式抽屉-- SlidingDrawerAndroid 平板电脑开发实战详解和典型案例上一节中,介绍了可展开列表ExpandableListView的基本知识及简单案例,本节将介绍Android 2.0控件滑动式抽屉SlidingDrawer,主要内容包括其基本知识以及一个简单的案例. 2.7.1 滑动式抽屉基本知识滑动式抽屉SlidingDrawer在UI布局有限或放不下太多控件的时候可以使用,滑动式抽屉SlidingDrawer可以隐藏屏外的内容,在布局文件中必须指定handle和