Android Menu菜单的设定

菜单主要分为三类,选项菜单(Option Menu)、上下文菜单(Context Menu)和子菜单(Sub Menu)。

1.选项菜单Option Menu

当用户单击软件上的菜单按钮,触发事件弹出的菜单框就是选项菜单。如图:

Android Menu菜单的设定_第1张图片

布局为在res文件夹下新建一个menu文件夹,在此文件夹下建xml文件。

Android Menu菜单的设定_第2张图片

布局代码大致如下:

 
 
      
     
     
 

showAsAction主要针对这个菜单的显示,它有三个选项:

always:总是显示在界面上

never:不显示在界面上,只让出现在右边的三个点中

ifRoom:如果有位置才显示,不然就出现在右边的三个点中

Java代码:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    //导入菜单布局
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    //点击菜单项的触发事件
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.mune_enter:
                Toast.makeText(this, "点击选项一", Toast.LENGTH_SHORT).show();
                break;
            case R.id.mune_setting:
                Toast.makeText(this, "点击选项二", Toast.LENGTH_SHORT).show();

                break;
            case R.id.mune_out:
                Toast.makeText(this, "点击选项三", Toast.LENGTH_SHORT).show();
                break;
            default:
                break;
        }
        return super.onOptionsItemSelected(item);
    }
}

2.上下文菜单Context Menu 

当用户长按Activity页面时,弹出的菜单被称为上下文菜单。一般情况下ContextMenu常用于ListView或者GridView。如图:

Android Menu菜单的设定_第3张图片

 布局大致如下:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public boolean onCreateOptionsMenu(Menu menu){
        SubMenu fileMenu = menu.addSubMenu("查看");
        SubMenu editMenu = menu.addSubMenu("输入");
        //添加菜单项
        fileMenu.add(1, 1, 1, "查看1");
        fileMenu.add(1, 2, 1, "查看2");
        fileMenu.add(1, 3, 1, "查看3");
        editMenu.add(2, 1, 1, "输入1");
        editMenu.add(2, 2, 1, "输入2");
        editMenu.add(2, 3, 1, "输入3");
        return super.onCreateOptionsMenu(menu);
}
//创建点击事件
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getGroupId() == 1) {
             switch (item.getItemId()) {
                 case 1:
                     Toast.makeText(this, "点击了查看1", Toast.LENGTH_SHORT).show();
                     break;
                 case 2:
                     Toast.makeText(this, "点击了查看2", Toast.LENGTH_SHORT).show();
                     break;
                 case 3:
                     Toast.makeText(this, "点击了查看3", Toast.LENGTH_SHORT).show();
                     break;
                 default:
                     break;
             }
         } else if (item.getGroupId() == 2) {
             switch (item.getItemId()) {
                 case 1:
                    Toast.makeText(this, "点击了输入1", Toast.LENGTH_SHORT).show();
                     break;
                 case 2:
                     Toast.makeText(this, "点击了输入2", Toast.LENGTH_SHORT).show();
                     break;
                 case 3:
                     Toast.makeText(this, "点击了输入3", Toast.LENGTH_SHORT).show();
                     break;
                 default:
                    break;
            }
         }
         return super.onOptionsItemSelected(item);
     }
 }

JAVA代码:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public boolean onCreateOptionsMenu(Menu menu){
        SubMenu fileMenu = menu.addSubMenu("查看");
        SubMenu editMenu = menu.addSubMenu("输入");
        //添加菜单项
        fileMenu.add(1, 1, 1, "查看1");
        fileMenu.add(1, 2, 1, "查看2");
        fileMenu.add(1, 3, 1, "查看3");
        editMenu.add(2, 1, 1, "输入1");
        editMenu.add(2, 2, 1, "输入2");
        editMenu.add(2, 3, 1, "输入3");
        return super.onCreateOptionsMenu(menu);
}
//创建点击事件
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getGroupId() == 1) {
             switch (item.getItemId()) {
                 case 1:
                     Toast.makeText(this, "点击了查看1", Toast.LENGTH_SHORT).show();
                     break;
                 case 2:
                     Toast.makeText(this, "点击了查看2", Toast.LENGTH_SHORT).show();
                     break;
                 case 3:
                     Toast.makeText(this, "点击了查看3", Toast.LENGTH_SHORT).show();
                     break;
                 default:
                     break;
             }
         } else if (item.getGroupId() == 2) {
             switch (item.getItemId()) {
                 case 1:
                    Toast.makeText(this, "点击了输入1", Toast.LENGTH_SHORT).show();
                     break;
                 case 2:
                     Toast.makeText(this, "点击了输入2", Toast.LENGTH_SHORT).show();
                     break;
                 case 3:
                     Toast.makeText(this, "点击了输入3", Toast.LENGTH_SHORT).show();
                     break;
                 default:
                    break;
            }
         }
         return super.onOptionsItemSelected(item);
     }
 }

3.子菜单Sub Menu

它就是将功能相同的操作进行分组显示,作用在选项菜单上,是选项菜单的二级菜单。如图:

Android Menu菜单的设定_第4张图片Android Menu菜单的设定_第5张图片Android Menu菜单的设定_第6张图片

子菜单的布局依靠代码实现,layout中并未体现。

JAVA代码:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public boolean onCreateOptionsMenu(Menu menu){
        SubMenu fileMenu = menu.addSubMenu("查看");
        SubMenu editMenu = menu.addSubMenu("输入");
        //添加菜单项
        fileMenu.add(1, 1, 1, "查看1");
        fileMenu.add(1, 2, 1, "查看2");
        fileMenu.add(1, 3, 1, "查看3");
        editMenu.add(2, 1, 1, "输入1");
        editMenu.add(2, 2, 1, "输入2");
        editMenu.add(2, 3, 1, "输入3");
        return super.onCreateOptionsMenu(menu);
}
//创建点击事件
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getGroupId() == 1) {
             switch (item.getItemId()) {
                 case 1:
                     Toast.makeText(this, "点击了查看1", Toast.LENGTH_SHORT).show();
                     break;
                 case 2:
                     Toast.makeText(this, "点击了查看2", Toast.LENGTH_SHORT).show();
                     break;
                 case 3:
                     Toast.makeText(this, "点击了查看3", Toast.LENGTH_SHORT).show();
                     break;
                 default:
                     break;
             }
         } else if (item.getGroupId() == 2) {
             switch (item.getItemId()) {
                 case 1:
                    Toast.makeText(this, "点击了输入1", Toast.LENGTH_SHORT).show();
                     break;
                 case 2:
                     Toast.makeText(this, "点击了输入2", Toast.LENGTH_SHORT).show();
                     break;
                 case 3:
                     Toast.makeText(this, "点击了输入3", Toast.LENGTH_SHORT).show();
                     break;
                 default:
                    break;
            }
         }
         return super.onOptionsItemSelected(item);
     }
 }

你可能感兴趣的:(android)