android开发中的ContextMneu(上下文菜单)

/*
 * ContextMenu menu(上下文菜单)=====》长按控件时会触发
 * 主要步骤:
 * 1.在res/menu中创建菜单文件
 * 2.重写onCreateContextMenu方法,在这个方法中加载菜单项
 * 3.重写onContextItemSelected方法,用于处理用户的选择事件
 * 4.注册上下文菜单给相应的控件,调用registerForContextMenu方法
 * 

 */

在res/menu中创建菜单文件

public class MainActivity extends Activity {


    private EditText editText;


@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        

        editText = (EditText) findViewById(R.id.editText_01);


        
        //给view注册上下文菜单,当view控件被长按时,会弹出上下文菜单
        registerForContextMenu(editText);
    }

    


    //该方法会在菜单被创建的时候回调
    /*
     * 参数含义如下:
     * 1、ContextMenu menu ====》 菜单对象
     * 2、View v ======》 用户长按的控件
     * 3、ContextMenuInfo menuIfo ====》 相关信息
     */

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
    ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
   
    //在此方法中进行加载菜单项
   
    //设置的菜单的标题

    menu.setHeaderTitle("菜单标题名称");
    //添加菜单项,把布局好的menu文件加载给菜单

    super.getMenuInflater().inflate(R.menu.my_context_menu, menu);

//这里除了从布局文件中加载菜单项,还可以利用代码的形式添加,如下:

//1.得到子菜单对象
SubMenu subMenu = menu.addSubMenu(0, 4, 4, "
主菜单选项");
//2.给子菜单对象添加选项
subMenu.add("
子菜单选线1");
subMenu.add("
子菜单选项2");
subMenu.add("
子菜单选项3");

    }

    


    //该方法会在用户点击上下文菜单项后出发,这里我做了把点击菜单项的文本赋值给EditText实现选择输入的功能
    /*
     * 1、item =====》被点击的上下文菜单项
     */

    @Override
    public boolean onContextItemSelected(MenuItem item) {
    // TODO Auto-generated method stub
    editText.setText(item.getTitle());
    //这里手动返回true,大概的意思是自己给时间做处理,而返回false的时候是系统帮忙监听处理,在有操作修改的情况下,返回true能避免Bug
    return true;
    }
    
}

你可能感兴趣的:(Android开发,contextMenu)