Activity中使用Menu

来源:互联网 发布:手机淘宝怎么加入群聊 编辑:程序博客网 时间:2024/06/05 18:28

    • 概述
    • 创建Menu资源
        • 在res目录下创建menu资源目录
        • 在menu目录下创建一个名为main的menu资源文件
    • 在Activity中展示此Menu
      • 常见问题

概述

由于手机屏幕空间非常有限,因此充分利用屏幕空间在手机界面设计中就显得非常重要。Android可以可以通过使用Menu来达到能展示菜单的同时还不占用任何屏幕空间


创建Menu资源

在res目录下创建menu资源目录。

图1

图2

注意:选定资源类型时一定要选择“menu”,否则有可能无法进行下一步的menu xml文件创建。


在menu目录下创建一个名为main的menu资源文件

图3

<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android">    <item android:id="@+id/add_item"        android:title="Add" />    <item android:id="@+id/remove_item"        android:title="Remove" /></menu>

在Activity中展示此Menu

public class FirstActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.first_layout);    }    //用于显示菜单    @Override    public boolean onCreateOptionsMenu(Menu menu) {        //先得到MenuInflater对象,然后调用inflate方法来给当前活动创建菜单        getMenuInflater().inflate(R.menu.main, menu);        //返回true表示允许创建的菜单显示出来,如果返回false则无法显示        return true;    }    //定义菜单响应事件,使菜单真正可用    @Override    public boolean onOptionsItemSelected(MenuItem item) {        switch (item.getItemId()) {            case R.id.add_item:                Toast.makeText(this, "You clicked Add", Toast.LENGTH_SHORT).show();                break;            case R.id.remove_item:                Toast.makeText(this, "You clicked Remove", Toast.LENGTH_SHORT).show();                break;            default:        }        return true;    }}

常见问题

1、菜单默认是不会显示出来的,只有当点击menu后才会显示。

图4
图5

2、有时应用程序没有右上角的menu菜单(也即三个竖点)。
此问题通常有两种解决方法:

  • Activity的继承有问题,需要将其继承自AppCompatActivity。本文就是采用的这种方法。
  • 兼容的最低SDK版本过高,可以将其修改为10。

参考《第一行代码——Android》

原创粉丝点击