在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溢出菜单颜色修改 可以参考blog http://blog.csdn.net/luohaowang320/article/details/38236929
在ActionBar的右侧,可以是在选项菜单(options menu)中任意一个菜单项。ActionBar提供若干有用的特性,其中包括了: ① 作为“action选项”,在ActionBar上直接显示“选项菜单”(OptionsMenu)—— 为用户进行...
囊括了ActionBar大多的用法,包括搜索按钮常用配置,下拉菜单等。 从配置文件和代码两个方面来说明ActionBar的用法。
这是在android 2.x版本中实现ActionBar和PopupMenu效果的Demo,其中使用了Android-support-v7中的类,实现overflow的下拉菜单和PopupMenu效果
这是一个有关android ActionBar详细实例,包含其所有功能1.显示选项菜单 2.使用程序的图标作为返回Home主屏或向上的导航操作。 3.提供交互式活动视图代替选项条目 4.提供标签页的切换方式的导航功能,可以切换多个...
该文件夹里面包含各种ActionBar相关的代码示例和演示PPT 1.显示选项菜单 2.使用程序的图标作为返回Home主屏或向上的导航操作。 3.提供交互式活动视图代替选项条目 4.提供标签页的切换方式的导航功能,可以切换多个...
ActionBarUseDemo总结了Actionbar的基础使用方法:1.在Actionbar添加menuitem,搜索、分享和其他普通item2.Actionbar...分离菜单(已过时)已过时的方法可以参考 进行替换/**********************/A ActionBar use demo
本文要实现微信6.1中点击顶部菜单栏的“+”号按钮时,会弹出一个列表框。这里用的了Activity实现,其实最好的方法可以用ActionBar,不过这货好像只支持3.0以后的版本。本文的接上文Android仿微信底部菜单栏+顶部菜单...
近来项目有个需求,要做个和QQ空间类似的菜单栏透明度渐变和下拉刷新带有阻尼回弹的效果。于是花点时间动手试了试,基本上达到了QQ空间的效果,截图如下: 通过观察QQ空间的运行效果,发现当往上滚动时菜单栏会...
突出活动的一些关键操作(如“搜索”、“创建”、“共享”等)、作为菜单的灵活使用,还可以实现类似TabWidget的标签功能以及下拉导航的功能,系统能够很好根据不同的屏幕配置来适应ActionBar的外观,配合起Fragemtn...
源码PagingListView,和下拉刷新恰恰相反,使用PagingListView,当ListView滑动到底部的时候,自动加载下一页的数据...遗憾的是它没有下拉刷新的功能,但demo中采用了actionbar菜单刷新的方式,其实下拉刷新未必就好。
从Android 3.0开始除了我们重点讲解的Fragment外,Action Bar也是一个重要的内容,Action Bar主要是用于代替传统的标题栏,对于Android平板...提示在你的程序中应用ActionBar需要注意几点,SDK和最终运行的固件必须是A
HEAD#要用到的第三方库###侧边滑入菜单:###下拉刷新:###android3.0以下可用的ActionBar:#未解决问题详细页面标题以图片作为背景详细页面加载完成后,有时刷新界面无效菜单连续点击=======mvmap android依赖的库...
第二节 :android 常用组件/控件使用介绍(activity,fragment,actionBar,dialog,tabhost,listview,RecyclerView,view切换,侧滑菜单,下拉刷新组件 等 第三节 :Service,Broadcast,存储及数据操作,多线程...
#LuoyangNews ##简介 ...侧滑菜单 网络数据的异步加载 ORM方式的数据库操作 缓存机制的实现 ##使用到的开源框架 Android常用工具 CSS selecter风格的html解析工具 淡入淡出的ActionBar 下拉刷新
开发中出现。 这是 android 开源库的绝对列表 列表菜单(#list-menu) 即将推出...! 1. 个性化视图 自定义视图。 包括 ListView、ActionBar、Menu、ViewPager、Gallery、GridView、ImageView、ProgressBar、Dialog、...