Android入门练习——三种常用菜单项(动态创建)

安卓软件开发常用的三种菜单分别是:选项菜单,子菜单,上下文菜单。其中,每个activity只能有且仅有一个选项菜单,为整个activity服务,但是可以有无数个子菜单和上下文/快捷菜单。


选项菜单

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    
    //创建选项菜单
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    	// 在菜单中添加菜单项
    	menu.add(Menu.FIRST, 1,1, "删除");//使程序阅读性更好
    	menu.add(Menu.FIRST, 2,2, "保存");
    	menu.add(Menu.FIRST+1, 3,2, "其他");
    	menu.add(Menu.FIRST+1, 4,1, "取消");
    	menu.setGroupEnabled(2, false);//设置第二组菜单不可用
    	//参数含义:1 组别 2 菜单项的id号,用来确定不同的菜单项
    	//3 用来排序的序号,越小越靠前 4 菜单显示的内容
    	return true;//表示显示菜单
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    	switch (item.getItemId()) {
		case 1:
			Toast.makeText(MainActivity.this,"删除操作" , Toast.LENGTH_LONG).show();
			break;
		case 2:
			Toast.makeText(MainActivity.this,"保存操作" , Toast.LENGTH_LONG).show();
			break;
		case 3:
			Toast.makeText(MainActivity.this,"其他操作" , Toast.LENGTH_LONG).show();
			break;
		case 4:
			Toast.makeText(MainActivity.this,"取消操作" , Toast.LENGTH_LONG).show();
			break;
		default:
			return super.onOptionsItemSelected(item);
		}
    	return true;
    }
}


子菜单

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    	// 创建子菜单
    	SubMenu subMenu1=menu.addSubMenu(1, 1, 1, "系统设置");
    	//创建子菜单项
    	subMenu1.add(1, 101, 1, "网络设置");
    	subMenu1.add(1, 101, 1, "高级设置");
    	
    	// 创建子菜单2
    	SubMenu subMenu2=menu.addSubMenu(2, 2, 1, "系统关闭");
    	//创建子菜单项
    	subMenu2.add(1, 101, 1, "直接关闭");
    	subMenu2.add(2, 102, 2, "稍后重启");
    	return true;
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    	// TODO Auto-generated method stub
    	switch (item.getItemId()) {
		case 101:
			Toast.makeText(MainActivity.this, "网络设置", 0).show();
			break;
		case 102:
			Toast.makeText(MainActivity.this, "高级设置", 0).show();
			break;

		default:
			break;
		}
    	return super.onOptionsItemSelected(item);
    }
}


上下文菜单

public class MainActivity extends Activity {
	private TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        tv=(TextView)findViewById(R.id.tv);
        //注册,为视图注册上下文菜单,在此是tv
        this.registerForContextMenu(tv);//那个英文电子书上按word可以有弹出解释的是不是也是这个/
        
    }
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
    		ContextMenuInfo menuInfo) {
    	switch (v.getId()) {
		case R.id.tv:
			menu.setHeaderTitle("我的操作");
			menu.add(1, 1, 1, "试试就试试,变为红色!");
			menu.add(1, 2, 2, "试试就试试,变为绿色!");
			menu.add(1, 3, 3, "试试就试试,变为蓝色!");
			break;

		default:
			break;
		}
    	super.onCreateContextMenu(menu, v, menuInfo);
    }
    @Override
    public boolean onContextItemSelected(MenuItem item) {
    	// TODO Auto-generated method stub
    	switch (item.getItemId()) {
		case 1:
			tv.setTextColor(0xFFFF0000);
			break;
		case 2:
			tv.setTextColor(0xFF00FF00);
			break;
		case 3:
			tv.setTextColor(0xFF0000FF);
			break;

		default:
			return super.onContextItemSelected(item);
		}
    	return true;
    }
}

(需长按文本)

猜你喜欢

转载自blog.csdn.net/qq_43145926/article/details/89388054