Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1049994
  • 博文数量: 403
  • 博客积分: 10272
  • 博客等级: 上将
  • 技术积分: 4407
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-24 14:22
文章分类

全部博文(403)

文章存档

2012年(403)

分类: 嵌入式

2012-04-11 19:20:46

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

 

   程序运行结果:

 

  

  

阅读(1561) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~