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还提供了对菜单项进行分组的功能,可以把相似功能的菜单项分成同一个组,这样就可以通过调用setGroupCheckablesetGroupEnabled,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;
}
}

   


原创粉丝点击