`
dowhathowtodo
  • 浏览: 774944 次
文章分类
社区版块
存档分类
最新评论

ActionBar中的下拉菜单操作

 
阅读更多
在ActionBar中添加下拉菜单,主要有一下几个关键步骤:

  1. 生成一个SpinnerAdapter,设置ActionBar的下拉菜单的菜单项

  2. 实现ActionBar.OnNavigationListener接口,当点击ActionBar的菜单项是进行相应的操作

  3. 调用setNavigationMode()方法将ActionBar的操作模型设置为ActionBar.NAVIGATION_MODE_LIST. 注意:这个步骤应该在Activity的onCreate()回调函数时执行

  4. 调用setListNavigationCallbacks()方法为ActionBar添加适配器和监听器.

  

  以下是例子代码,这个例子中只是简单测试,ArrayAdapter是SpinnerAdapter的间接子类,这里ActionBar中的菜单项是一个数组的数据,当点击菜单的其中一项,就会生成一个对应的Fragment代替原来的Fragment.Fragment里面也只有简单的一个TextView控件,用来显示选择的信息。

  自定义的Fragment:

public class StudentInfo extends Fragment
{
    // Fragment对应的标签,当Fragment依附于Activity时得到
    private String tag;

    @Override
    public void onAttach(Activity activity)
    {
        super.onAttach(activity);
        tag = getTag();
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        TextView textView = new TextView(getActivity());
        textView.setText(tag);
        return textView;
    }
}


 在strings.xml中定义一个数组,这个数组就是菜单项的信息:

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

    <string name="app_name">ActionBar下拉菜单</string>

    <string-array name="student">
        <item>邓名侨</item>
        <item>刘天喜</item>
        <item>其黄石</item>
        <item>蔡宏远</item>
    </string-array>

</resources>


主要的程序片段,MainActivity:

public class MainActivity extends Activity
{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // 生成一个SpinnerAdapter
        SpinnerAdapter adapter = ArrayAdapter.createFromResource(this, R.array.student, android.R.layout.simple_spinner_dropdown_item);
        // 得到ActionBar
        ActionBar actionBar = getActionBar();
        // 将ActionBar的操作模型设置为NAVIGATION_MODE_LIST
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
        // 为ActionBar设置下拉菜单和监听器
        actionBar.setListNavigationCallbacks(adapter, new DropDownListenser());
    }

    /**
     * 实现 ActionBar.OnNavigationListener接口
     */
    class DropDownListenser implements OnNavigationListener
    {
        // 得到和SpinnerAdapter里一致的字符数组
        String[] listNames = getResources().getStringArray(R.array.student);

        /* 当选择下拉菜单项的时候,将Activity中的内容置换为对应的Fragment */
        public boolean onNavigationItemSelected(int itemPosition, long itemId)
        {
            // 生成自定的Fragment
            StudentInfo student = new StudentInfo();
            FragmentManager manager = getFragmentManager();
            FragmentTransaction transaction = manager.beginTransaction();
            // 将Activity中的内容替换成对应选择的Fragment
            transaction.replace(R.id.context, student, listNames[itemPosition]);
            transaction.commit();
            return true;
        }
    }
}


出处m::http://www.cnblogs.com/hanyuan/archive/2012/04/11/Android_ActionBar_AddingDrop-downNavigation.html

分享到:
评论

相关推荐

    ActionBar溢出菜单颜色修改

    ActionBar溢出菜单颜色修改 可以参考blog http://blog.csdn.net/luohaowang320/article/details/38236929

    android4.0 actionbar API

    在ActionBar的右侧,可以是在选项菜单(options menu)中任意一个菜单项。ActionBar提供若干有用的特性,其中包括了: ① 作为“action选项”,在ActionBar上直接显示“选项菜单”(OptionsMenu)—— 为用户进行...

    ActionBar实用案例

    囊括了ActionBar大多的用法,包括搜索按钮常用配置,下拉菜单等。 从配置文件和代码两个方面来说明ActionBar的用法。

    在2.x版本中实现ActionBar和PopupMenu效果

    这是在android 2.x版本中实现ActionBar和PopupMenu效果的Demo,其中使用了Android-support-v7中的类,实现overflow的下拉菜单和PopupMenu效果

    android ActionBar详细实例

    这是一个有关android ActionBar详细实例,包含其所有功能1.显示选项菜单 2.使用程序的图标作为返回Home主屏或向上的导航操作。 3.提供交互式活动视图代替选项条目 4.提供标签页的切换方式的导航功能,可以切换多个...

    android ActionBar详细相关代码示例

    该文件夹里面包含各种ActionBar相关的代码示例和演示PPT 1.显示选项菜单 2.使用程序的图标作为返回Home主屏或向上的导航操作。 3.提供交互式活动视图代替选项条目 4.提供标签页的切换方式的导航功能,可以切换多个...

    ActionBarUseDemo:一个 ActionBar 使用演示

    ActionBarUseDemo总结了Actionbar的基础使用方法:1.在Actionbar添加menuitem,搜索、分享和其他普通item2.Actionbar...分离菜单(已过时)已过时的方法可以参考 进行替换/**********************/A ActionBar use demo

    Android仿微信实现下拉列表

    本文要实现微信6.1中点击顶部菜单栏的“+”号按钮时,会弹出一个列表框。这里用的了Activity实现,其实最好的方法可以用ActionBar,不过这货好像只支持3.0以后的版本。本文的接上文Android仿微信底部菜单栏+顶部菜单...

    Android UI设计系列之自定义ListView仿QQ空间阻尼下拉刷新和渐变菜单栏效果(8)

    近来项目有个需求,要做个和QQ空间类似的菜单栏透明度渐变和下拉刷新带有阻尼回弹的效果。于是花点时间动手试了试,基本上达到了QQ空间的效果,截图如下:  通过观察QQ空间的运行效果,发现当往上滚动时菜单栏会...

    Android Action Bar 详解篇(推荐)

    突出活动的一些关键操作(如“搜索”、“创建”、“共享”等)、作为菜单的灵活使用,还可以实现类似TabWidget的标签功能以及下拉导航的功能,系统能够很好根据不同的屏幕配置来适应ActionBar的外观,配合起Fragemtn...

    类似下拉刷新的功能

    源码PagingListView,和下拉刷新恰恰相反,使用PagingListView,当ListView滑动到底部的时候,自动加载下一页的数据...遗憾的是它没有下拉刷新的功能,但demo中采用了actionbar菜单刷新的方式,其实下拉刷新未必就好。

    Android应用开发中Action bar编写的入门教程

    从Android 3.0开始除了我们重点讲解的Fragment外,Action Bar也是一个重要的内容,Action Bar主要是用于代替传统的标题栏,对于Android平板...提示在你的程序中应用ActionBar需要注意几点,SDK和最终运行的固件必须是A

    mvmap-android:mvmap 安卓

    HEAD#要用到的第三方库###侧边滑入菜单:###下拉刷新:###android3.0以下可用的ActionBar:#未解决问题详细页面标题以图片作为背景详细页面加载完成后,有时刷新界面无效菜单连续点击=======mvmap android依赖的库...

    andoridBestDemo

    第二节 :android 常用组件/控件使用介绍(activity,fragment,actionBar,dialog,tabhost,listview,RecyclerView,view切换,侧滑菜单,下拉刷新组件 等 第三节 :Service,Broadcast,存储及数据操作,多线程...

    luoyangnews:洛阳新闻网非官方客户端

    #LuoyangNews ##简介 ...侧滑菜单 网络数据的异步加载 ORM方式的数据库操作 缓存机制的实现 ##使用到的开源框架 Android常用工具 CSS selecter风格的html解析工具 淡入淡出的ActionBar 下拉刷新

    java7源码翻译-Android-Library:一个android库的列表让你的编码生活更轻松

    开发中出现。 这是 android 开源库的绝对列表 列表菜单(#list-menu) 即将推出...! 1. 个性化视图 自定义视图。 包括 ListView、ActionBar、Menu、ViewPager、Gallery、GridView、ImageView、ProgressBar、Dialog、...

Global site tag (gtag.js) - Google Analytics