在 Android 中,菜单(Menu)是一种用户界面元素,用于提供应用程序的操作选项。Android 提供了两种类型的菜单:选项菜单(Options Menu)和上下文菜单(Context Menu)。以下是这两种菜单的基本使用示例:

1. 选项菜单(Options Menu)

a. 在 res/menu 目录下创建菜单资源文件,例如 options_menu.xml:
<!-- res/menu/options_menu.xml -->
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/menu_item1"
        android:title="Item 1"/>
    <item
        android:id="@+id/menu_item2"
        android:title="Item 2"/>
    <item
        android:id="@+id/menu_item3"
        android:title="Item 3"/>
</menu>

b. 在活动(Activity)中使用选项菜单:
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

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

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // 加载选项菜单资源文件
        getMenuInflater().inflate(R.menu.options_menu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        // 处理选项菜单项的点击事件
        switch (item.getItemId()) {
            case R.id.menu_item1:
                showToast("Item 1 selected");
                return true;
            case R.id.menu_item2:
                showToast("Item 2 selected");
                return true;
            case R.id.menu_item3:
                showToast("Item 3 selected");
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

    private void showToast(String message) {
        Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
    }
}

2. 上下文菜单(Context Menu)

a. 在活动的 onCreate 方法中为视图注册上下文菜单:
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

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

        // 注册上下文菜单
        TextView textView = findViewById(R.id.textView);
        registerForContextMenu(textView);
    }

    // ...

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        // 加载上下文菜单资源文件
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.context_menu, menu);
    }

    @Override
    public boolean onContextItemSelected(@NonNull MenuItem item) {
        // 处理上下文菜单项的点击事件
        switch (item.getItemId()) {
            case R.id.context_menu_item1:
                showToast("Context Item 1 selected");
                return true;
            case R.id.context_menu_item2:
                showToast("Context Item 2 selected");
                return true;
            default:
                return super.onContextItemSelected(item);
        }
    }
}

b. 在 res/menu 目录下创建上下文菜单资源文件,例如 context_menu.xml:
<!-- res/menu/context_menu.xml -->
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/context_menu_item1"
        android:title="Context Item 1"/>
    <item
        android:id="@+id/context_menu_item2"
        android:title="Context Item 2"/>
</menu>

这两个例子展示了如何创建选项菜单和上下文菜单,并在活动中处理菜单项的点击事件。你可以根据实际需求修改菜单资源文件和处理逻辑。


转载请注明出处:http://www.zyzy.cn/article/detail/15158/Android