Android 学习笔记16:Menu 和 action bar
2014-05-11 01:15
501 查看
基本的菜单类型有:
创建选项菜单方法:
添加菜单按钮被点击时的响应,如果被响应了返回true 否则返回false
如果希望该菜单项是与一个Activity关联的话可以设置setIntent()
实现方式有:
类型一:floating context menu 类似于对话框
创建上下文菜单:
1、为组件注册上下文菜单,如果是listView或GridView就是为它们的每一个Item注册。
2、重写onCreatContextMenu()
3.定义 事件监听器
使用情形:1.长按一个item 2.在一个view中选择一个checkbox或者类似控件
设计类型:1.对单独一个view使用 2.对一组listview或gridview中的item使用
2.为应用程序提供导航操作,让用户更容易在不同Activity中切换
3.显示选项菜单
如果3.0之前的版本要使用Actionbar 就需要扩展包
在3.0以上版本Action Bar默认是启用的,如果不想用:
1.在代码中 getActionBar( ).hide( )隐藏Action Bar
2.引用一个不包含操作栏的主题
实现作用一:显示应用品牌 如左上角的微信logo和文字
默认情况logo部分是显示应用程序图标的,我们需要通过setLogo(Drawable logo)设置我们的logo的。
logo与应用程序图标是不同的,应用程序图标的大小是有限制的,且不同的程序版本不同,logo是应用的标志
还可以通过其它函数设置title,控制logo和title的隐藏显示等等
实现作用二:导航功能
把logo当做有先上功能的按钮,这个按钮也手机的返回按钮式有区别的,感觉在弱化菜单和返回按钮的功能,模仿io
设置返回的Activity有多种方法,最简单的是在manifest中表明当前Activity的parent,或者通过onOptionsItemSelected响应操作
添加导航标签tab,经常与Fragment一起使用。
首先通过setNavigationMode(ActionBar.NAVIGATION_MODE_TABS)设置tab导航
然后通过actiongBat.addTab( )添加tab。如:
Tab的切换时通过TabListener来处理的,一般然Activity实现该接口然后,通过this参数传递
TabLIstener三个回调函数onTabSelected() onTabUnselected() onTabReselected()分别处理选中,未选中,再次选中的事件(结合Fragment再补充)
下拉列表导航(结合spinner再补充)
自定义导航
实现作用三:显示选项菜单
可以在布局文件的Item节点中设置showAsAction属性或者setShowAsAction()方法设置
如果Action Bar没有足够的空间显示选项则这些选项会在overflow menu中出现
1.如果android设备支持菜单按钮,那么点击菜单按钮会显示overflow menu选项
2.不支持的话,Action Bar 右侧会有一个
选项,点击它或者菜单选项按钮就会显示overflow
menu
如果希望强制出现该按钮,可以在Activity的onCreat()方法中加入
该代码是检查设备是否支持菜单按钮,我们设置为不支持,那么就会Action Bar就会显示Overflow menu按钮了
选项菜单(3.0后通过Action bar实现)
这一部分主要是作用于整个app的菜单选项,如搜索、设置等创建选项菜单方法:
public boolean onCreateOptionsMenu(Menu menu) { //设置样式 getMenuInflater().inflate(R.menu.main, menu); return true; }
添加菜单按钮被点击时的响应,如果被响应了返回true 否则返回false
//菜单选项第一次显示时的回调函数,3.0以后Activity启动就调用该函数 public boolean onOptionsItemSelected(MenuItem mi){ switch(mi.getItemId()){ //对应的事件 } return super.onOptionsItemSelected(mi); }除此之外还可通过setMenuItemClickListener()方法设置监听器xml中设置android:onclick属性。
如果希望该菜单项是与一个Activity关联的话可以设置setIntent()
上下文菜单
提供一些作用于特定控件或Fragment的操作,经常用在listVIew或GridView中。实现方式有:
类型一:floating context menu 类似于对话框
创建上下文菜单:
1、为组件注册上下文菜单,如果是listView或GridView就是为它们的每一个Item注册。
TextView txt = (TextView)findViewById(R.id.tv_contextMenu); //为控件注册上下文菜单 registerForContextMenu(txt);
2、重写onCreatContextMenu()
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { // 设置上下文的样式 getMenuInflater().inflate(R.menu.context, menu); super.onCreateContextMenu(menu, v, menuInfo); }
3.定义 事件监听器
//上下文菜单被点击时触发的事件 public boolean onContextItemSelected(MenuItem mi){ switch(mi.getItemId()){ case R.id.green_it: mi.setChecked(true); txt.setBackgroundColor(Color.GREEN); break; case R.id.red_it: mi.setChecked(true); txt.setBackgroundColor(Color.RED); break; case R.id.blue_it: mi.setChecked(true); txt.setBackgroundColor(Color.BLUE); break; } return true; }类型二:上下文操作模式(推荐)
使用情形:1.长按一个item 2.在一个view中选择一个checkbox或者类似控件
设计类型:1.对单独一个view使用 2.对一组listview或gridview中的item使用
弹出菜单
Action Bar
作用:
1.显示应用品牌2.为应用程序提供导航操作,让用户更容易在不同Activity中切换
3.显示选项菜单
如果3.0之前的版本要使用Actionbar 就需要扩展包
在3.0以上版本Action Bar默认是启用的,如果不想用:
1.在代码中 getActionBar( ).hide( )隐藏Action Bar
2.引用一个不包含操作栏的主题
实现作用一:显示应用品牌 如左上角的微信logo和文字
默认情况logo部分是显示应用程序图标的,我们需要通过setLogo(Drawable logo)设置我们的logo的。
logo与应用程序图标是不同的,应用程序图标的大小是有限制的,且不同的程序版本不同,logo是应用的标志
还可以通过其它函数设置title,控制logo和title的隐藏显示等等
实现作用二:导航功能
把logo当做有先上功能的按钮,这个按钮也手机的返回按钮式有区别的,感觉在弱化菜单和返回按钮的功能,模仿io
actionBar.setHomeButtonEnabled(true);//logo可以像按钮一样点击 actionBar.setDisplayHomeAsUpEnabled(true);//设置先上导航功能
设置返回的Activity有多种方法,最简单的是在manifest中表明当前Activity的parent,或者通过onOptionsItemSelected响应操作
添加导航标签tab,经常与Fragment一起使用。
首先通过setNavigationMode(ActionBar.NAVIGATION_MODE_TABS)设置tab导航
然后通过actiongBat.addTab( )添加tab。如:
actionBar.addTab(actionBar.newTab().setText("好友").setTabListener(this)); actionBar.addTab(actionBar.newTab().setText("群聊").setTabListener(this));
Tab的切换时通过TabListener来处理的,一般然Activity实现该接口然后,通过this参数传递
TabLIstener三个回调函数onTabSelected() onTabUnselected() onTabReselected()分别处理选中,未选中,再次选中的事件(结合Fragment再补充)
下拉列表导航(结合spinner再补充)
自定义导航
实现作用三:显示选项菜单
可以在布局文件的Item节点中设置showAsAction属性或者setShowAsAction()方法设置
如果Action Bar没有足够的空间显示选项则这些选项会在overflow menu中出现
1.如果android设备支持菜单按钮,那么点击菜单按钮会显示overflow menu选项
2.不支持的话,Action Bar 右侧会有一个
选项,点击它或者菜单选项按钮就会显示overflow
menu
如果希望强制出现该按钮,可以在Activity的onCreat()方法中加入
try { ViewConfiguration mconfig = ViewConfiguration.get(this); Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey"); if(menuKeyField != null) { menuKeyField.setAccessible(true); menuKeyField.setBoolean(mconfig, false); } } catch (Exception ex) { }
该代码是检查设备是否支持菜单按钮,我们设置为不支持,那么就会Action Bar就会显示Overflow menu按钮了
相关文章推荐
- Android 学习笔记(二七):Menu
- Android 学习笔记(二七):Menu
- android菜鸟学习笔记16----Android项目打包安装过程(Run as Android Application)
- java/android 设计模式学习笔记(16)---命令模式
- Mars Android视频学习笔记——01_16_SQLite使用方法
- Android 学习笔记2 MENU
- Android 学习笔记(二七):Menu
- Android 基础学习笔记之- Menu的用法
- Androidx学习笔记(16)-- 数据存储之 SharedPreference
- Android(java)学习笔记196:Android中Menu的使用(静态和动态)
- Android 学习笔记(二七):Menu
- [Android新手学习笔记16]-UI控件之AlertDialog
- Android 学习笔记(二七):Menu
- android menu学习笔记
- Android(java)学习笔记112:局部位置的内部类的介绍
- Android(java)学习笔记209:采用get请求提交数据到服务器(qq登录案例)
- 学习笔记:android下获取sdcard容量大小
- Android 学习笔记 Contacts (一)ContentResolver query 参数详解
- android应用开发揭秘examples_04-13笔记(Menu的2种实现方式)
- 学习笔记--android中surfaceview 简单用法实例:画板。