Android菜单
来源:互联网 发布:织梦dedecms教程 编辑:程序博客网 时间:2024/05/01 12:17
android提供了3种菜单类型,分别为options menu,context menu,sub menu。optins menu就是通过按home键来显示,context menu需要在view上按上2s后显示。这两种menu都有可以加入子菜单,子菜单中不能嵌套子菜单。
options menu最多只能在屏幕最下面显示6个菜单选项,成为icon menu,icon menu不能有checkable选项。多余6的会以mroe icon menu来调用,成为exanded menu。options menu通过activity的onCreateOptionsMenu来生成,这个函数只会在menu第一次生成时调用。任何想改变options menu的想法只能在onPreareOptionsMenu来实现,这个函数在menu显示前调用。onOptionsItemSelected处理中的菜单项
context menu是跟某个具体的view绑定在一起,在activity中用registerForContextMenu来为某个view注册context menu。context menu。context menu再显示前会调用onCreatextMenu来生成menu。onContextItemSelected选项的菜单项
android还提供了对菜单项进行分组的功能,可以把相似功能的菜单项分成同一个组,这样就可以通过调用setGroupCheckable,setGroupEnabled,setGroupVisible来设置菜单属性,而无须单独设置。
options menu菜单的实现
atityty中的代码:
public class MenuTestActivity1 extends Activity implements OnMenuItemClickListener{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public boolean onCreateOptionsMenu(Menu menu){
MenuInflater inflater = this.getMenuInflater();
inflater.inflate(R.menu.options_menu, menu);
for(int i=0; i<menu.size(); i++){
menu.getItem(i).setOnMenuItemClickListener(this);
}
return true;
}
@Override
public boolean onMenuItemClick(MenuItem item) {
switch(item.getItemId()){
case R.id.newFile:
Toast.makeText(this, "new file", Toast.LENGTH_LONG).show();
break;
case R.id.exit:
// Toast.makeText(this, "exit", Toast.LENGTH_LONG).show();
this.finish();
break;
}
return false;
}
子菜单的实现:
package cn.class3g.activity;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.SubMenu;
import android.widget.Toast;
public class MenuTestActivity3 extends Activity {
private static final int SUBMENU = 10;
private static final int SUBITEM1 = SUBMENU+1;
private static final int SUBITEM2 = SUBMENU+2;
private static final int SUBITEM3 = SUBMENU+3;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
//只在选项菜单第一次显示时调用
public boolean onCreateOptionsMenu(Menu menu){
MenuInflater inflater = this.getMenuInflater();
inflater.inflate(R.menu.sub_menu, menu);
SubMenu subMenu = menu.addSubMenu(1,SUBMENU, 1, "子菜单");
subMenu.add(20,SUBITEM1,1, "subitem1");
subMenu.add(20,SUBITEM2,2, "subitem2");
subMenu.add(30,SUBITEM3,3, "subitem3");
subMenu.setGroupCheckable(20, true,true);
MenuItem item = subMenu.getItem(0);
// item.setCheckable(true);
item.setChecked(true);
subMenu.findItem(SUBITEM3).setCheckable(true);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case R.id.menuitem1:
Toast.makeText(this, "new file", Toast.LENGTH_LONG).show();
break;
case R.id.menuitem2:
// Toast.makeText(this, "exit", Toast.LENGTH_LONG).show();
break;
case SUBITEM1:
break;
case SUBITEM2:
this.finish();
break;
}
return true;
}
}
- android菜单子菜单
- Android菜单
- android 菜单
- Android菜单
- android 菜单
- Android 菜单
- Android菜单
- Android菜单
- android--菜单
- Android菜单
- Android菜单
- Android菜单
- android 菜单
- android菜单
- android菜单
- android菜单
- android 菜单
- Android菜单
- Activity生命周期
- CSDN>>2011年重大IT安全事件回顾
- jdom读取html的小例子
- leftist (左偏堆,插入与弹出功能的实现)
- SqlServer上的 *.mdmp文件
- Android菜单
- 著名画家吕顺和“2011胡润最受尊敬企业家”获奖得主大智慧集团总裁张长虹
- 用NSZombieEnabled帮助解决EXC_BAD_ACCESS
- 安装ie9出现错误代码800F081E
- 如何使用命令行启动控制面板中的应用程序
- Android模拟器(AVD)~【1】启用SD存储卡
- WinCE内核裁减(中文字体)及字库和内核的分离
- 64位centos部署32位wine(任何linux操作系统都适合)
- ASP.NET 网页转换为用户控件