Android 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;
        }
    }
}

 

   程序运行结果:

时间: 2024-11-02 10:36:45

Android ActionBar中的下拉菜单操作的相关文章

ActionBar中的下拉菜单操作

在ActionBar中添加下拉菜单,主要有一下几个关键步骤: 1. 生成一个SpinnerAdapter,设置ActionBar的下拉菜单的菜单项 2. 实现ActionBar.OnNavigationListener接口,当点击ActionBar的菜单项是进行相应的操作 3. 调用setNavigationMode()方法将ActionBar的操作模型设置为ActionBar.NAVIGATION_MODE_LIST. 注意:这个步骤应该在Activity的onCreate()回调函数时执行

Javascript设计网页中的下拉菜单

javascript|菜单|设计|网页|下拉 在网页制作时,为了更好地组织信息,使显示的信息分类明确.层次清晰,网页制作者往往费尽心机.常用的方法有用树型结构显示信息,用表格进行网页布局,用框架(frame)组织页面等等.但对于习惯了Windows操作系统的用户来说,利用菜单操作可以算是最自然的方法了.下面我们就来看一下怎样在网页中设计下拉式菜单. 下拉式菜单由若干个显示在窗口顶部的主菜单条和各个菜单条下面的子菜单组成.每个子菜单往往还包含几个子菜单项.通常,只有菜单条显示在窗口中,并且当鼠标指

&amp;#106avascript设计网页中的下拉菜单

菜单|设计|网页|下拉 在网页制作时,为了更好地组织信息,使显示的信息分类明确.层次清晰,网页制作者往往费尽心机.常用的方法有用树型结构显示信息,用表格进行网页布局,用框架(frame)组织页面等等.但对于习惯了Windows操作系统的用户来说,利用菜单操作可以算是最自然的方法了.下面我们就来看一下怎样在网页中设计下拉式菜单. 下拉式菜单由若干个显示在窗口顶部的主菜单条和各个菜单条下面的子菜单组成.每个子菜单往往还包含几个子菜单项.通常,只有菜单条显示在窗口中,并且当鼠标指针指向菜单条时,菜单条

Excel中自适应下拉菜单怎么设置

Excel中自适应下拉菜单怎么设置   本文所要介绍的自适应的下拉菜单,就是可以根据用户在单元格里输入的字符,在下拉菜单的显示项目中自动筛选出以这些字符开头的项目,缩小下拉菜单中的项目选择范围,使目标更精准,方便用户选取.这是一种对数据有效性序列的智能化改造手段. 完成后的效果如下: 具体设置方法如下: 步骤1:将需要作为选择项目的原始数据进行排序. 排序以后,相同字符开头的字符串将分布在连续的单元格中,便于创建数据有效性的引用序列. 步骤2:选中需要设置下拉菜单的单元格,打开[数据有效性]对话

&amp;#106avascript+PHP 应用一:网页制作中双下拉菜单的动态实现(转贴)

菜单|动态|网页|下拉 JavaScript+PHP 应用一:网页制作中双下拉菜单的动态实现 ---摘自互联网 在网页制作中,常常遇到这种情况,通过主下拉菜单的选择,动态的生成子下拉菜单.例如:在主菜单中有"焦点新闻"."生活时尚"."心情故事"三个选项,通过"焦点新闻"的选择,子菜单自动生成如"国内"."国际"."体育"."文娱",依此类推. 利

Excel中制作下拉菜单的4种方法

Excel中制作下拉菜单的4种方法   其实还有另外3种: 1.创建列表 在一列中按alt+向下箭头,即可生成一个下拉菜单(创建列表).此方法非常简单. 2.开发工具 - 插入 - 组合框(窗体控件) 如果你的excel没有[开发工具]选项,可以从 文件 - 选项 - 自定义功能区,选中"开发工具".(excel2007为office按钮 - excel选项 - 常规 - 显示"开发工具") 3.开发工具 - 组合框(ActiveX控件) 注: 在"设计模

jsp中根据下拉菜单的值进行查询

问题描述 jsp中根据下拉菜单的值进行查询 当选择一个起点时,如何获得起点编号,求帮助 这是数据库中的表 解决方案 可以给下拉列表添加一个点击事件,把当前对象的ID传给后台查询出起点的编号,然后显示在对应的起点编号的input中 解决方案二: 请问可以说的详细一点吗,代码可以帮我写一下吗,,不太懂 解决方案三: 生成jsp时,将你的数据库表中的ID和下拉列表的选项对应起来,为每个对应的项赋予一个_id属性,这样生成的html就如下所示: <select id="mySelect"

控件-关于windows phone开发中的下拉菜单listpicker位置问题

问题描述 关于windows phone开发中的下拉菜单listpicker位置问题 由于listpicker所在区域位置固定且大小也固定,它下方的控件位置也必须固定,点击listpicker时下拉出来的部分会显示不完全,有办法让它浮在界面最上层且不影响下方控件的位置吗?求大神指点.谢谢. 解决方案 windows phone 开发中资源文件的路径问题Windows Phone 开发,关于 TouchPanel的问题Windows 8.1 & Windows Phone 开发环境安装遇到的问题

BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)_jquery

今天收到程序组提交的一个兼容BUG,在火狐中使用模态框加载日期控件时选择时间下拉菜单没有效果(不能点击),而在谷歌中却是好的, 排错思路: 1,在当前页面主层放置一个时间控件,测试通过 2,在ajax加载页放置一个时间控件,测试通过 3,在模态框最外层放置一个时间控件,不通过 主要原因是模态框与时间下拉菜单层级关系造成(z-index),因时间控件是收bootstrap的时间控件.js文件生成,所以导致在页面与css样式表中修改无效,网上有直接修改bootstrap的时间控件.js文件,然而bo