博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android ActionBar中的下拉菜单
阅读量:6163 次
发布时间:2019-06-21

本文共 2718 字,大约阅读时间需要 9 分钟。

  在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中定义一个数组,这个数组就是菜单项的信息:

 

ActionBar下拉菜单
邓名侨
刘天喜
其黄石
蔡宏远

 

主要的程序片段,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;        }    }}

 

 

转载地址:http://zbafa.baihongyu.com/

你可能感兴趣的文章
委托到Lambda的进化: ()=> {} 这个lambda表达式就是一个无参数的委托及具体方法的组合体。...
查看>>
apache 伪静态 .htaccess
查看>>
unity3d 截屏
查看>>
ASP.NET MVC学习之控制器篇
查看>>
MongoDB ServerStatus返回信息
查看>>
分析jQuery源码时记录的一点感悟
查看>>
程序局部性原理感悟
查看>>
UIView 动画进阶
查看>>
Spring如何处理线程并发
查看>>
linux常用命令(用户篇)
查看>>
获取组件的方式(方法)
查看>>
win2008 server_R2 自动关机 解决
查看>>
我的友情链接
查看>>
在C#调用C++的DLL简析(二)—— 生成托管dll
查看>>
Linux macos 常用终端操作
查看>>
企业网络的管理思路
查看>>
Linux磁盘分区与挂载
查看>>
J2se学习笔记一
查看>>
DNS视图及日志系统
查看>>
老李分享:Android性能优化之内存泄漏 3
查看>>