zoukankan      html  css  js  c++  java
  • 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;
            }
        }
    }

  • 相关阅读:
    JQuery Ajax 的简单使用
    使用PHP QR Code生成二维码
    SQL中Group By的使用
    虚拟主机的配置
    文件上传
    session机制详解以及session的相关应用
    thinkphp权限管理Rbac实例
    jQuery处理点击父级checkbox所有子级checkbox都选中,取消选中所有子级checkbox都取消
    传递一个父id返回所有子id的用法,可用于删除父级以下的所有子级
    thinkphp3.2独立分组的建立
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/4250434.html
Copyright © 2011-2022 走看看