coderABC

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

两种菜单实现方式大同小异。

一、右上角二级菜单(submenu):

1、布局文件(menu文件夹下创建sub_menu.xml):

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
   <item
       android:id="@+id/school"
       android:title="学校">
       <menu>
           <item
               android:id="@+id/czdx"
               android:title="常州大学"></item>
           <item
               android:id="@+id/njdx"
               android:title="南京大学"></item>
           <item
               android:id="@+id/whdx"
               android:title="武汉大学"></item>
       </menu>
   </item>
   <item
       android:id="@+id/college"
       android:title="院系">
       <menu>
           <item
               android:id="@+id/computer"
               android:title="计算机学院"></item>
           <item
               android:id="@+id/art"
               android:title="艺术学院"></item>
           <item
               android:id="@+id/english"
               android:title="英语学院"></item>
       </menu>
   </item>
</menu>

 

2、业务实现:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    //加载 布局实现
    getMenuInflater().inflate(R.menu.sub_menu, menu);
    return super.onCreateOptionsMenu(menu);
}

 

3、选择事件:

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        String str = null;
        switch(item.getItemId()){
            case R.id.school:
            case R.id.college:
                str = "一级标签:" + item.getItemId() + "|" + item.toString();
                break;
            case R.id.czdx:
            case R.id.njdx:
            case R.id.whdx:
            case R.id.english:
            case R.id.art:
            case R.id.computer:
                str = "二级标签:" + item.getItemId() + "|" + item.toString();
                break;
        }
        Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
        return super.onOptionsItemSelected(item);
    }

 

4、效果如下:

         

二、快捷菜单(ContextMenu):

简介:单击界面某元素超过2秒后,弹出一个快捷菜单。

1、布局文件(menu文件夹下创建context_menu.xml):

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/school"
        android:title="学校">
        <menu>
            <item
                android:id="@+id/czdx"
                android:title="常州大学"></item>
            <item
                android:id="@+id/njdx"
                android:title="南京大学"></item>
        </menu>
    </item>
    <item
        android:id="@+id/college"
        android:title="院系">
        <menu>
            <item
                android:id="@+id/computer"
                android:title="计算机学院"></item>
            <item
                android:id="@+id/art"
                android:title="艺术学院"></item>
        </menu>
    </item>
</menu>

 

2、业务实现:

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
    menu.setHeaderTitle("快捷菜单");
    menu.add(0, 1, 0,"菜单1");
    menu.add(0, 2, 1,"菜单2");
    //加载 布局实现
    getMenuInflater().inflate(R.menu.context_menu, menu);
    super.onCreateContextMenu(menu, v, menuInfo);
}

3、选择事件:

@Override
public boolean onContextItemSelected(MenuItem item) {
    String str = null;
    switch(item.getItemId()){
        case R.id.school:
        case R.id.college:
            str = "一级标签:" + item.getItemId() + "|" + item.toString();
            break;
        case R.id.czdx:
        case R.id.njdx:
        case R.id.art:
        case R.id.computer:
            str = "二级标签:" + item.getItemId() + "|" + item.toString();
            break;
    }
    Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
    return super.onContextItemSelected(item);
}

4、最后,将快捷菜单注册到界面中的某个控件上:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test);
    Button button = (Button) findViewById(R.id.btn1);
    registerForContextMenu(button);
}

 

5、效果如下,长按按钮,弹出快捷菜单:


 

posted on 2017-02-22 15:53  as798982083  阅读(1512)  评论(0编辑  收藏  举报