Android:菜单

选项菜单和子菜单

package com.example.myapplication;

import android.app.Activity;
import android.graphics.Color;
import android.media.midi.MidiDeviceService;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.SubMenu;
import android.widget.EditText;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
    final int FONT_10 = 0x111;
    final int FONT_12 = 0x112;
    final int FONT_14 = 0x113;
    final int FONT_16 = 0x114;
    final int FONT_18 = 0x115;
    final int PLAIN_ITEM = 0x11b;
    final int FONT_RED = 0x116;
    final int FONT_BLUE = 0x117;
    final int FONT_GREEN = 0x118;
    private EditText edit;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        edit = findViewById(R.id.txt);
    }

    public boolean onCreateOptionsMenu(Menu menu) {
        SubMenu fontMenu = menu.addSubMenu("字体大小");
        fontMenu.setIcon(R.drawable.ic_launcher_foreground);
        fontMenu.setHeaderIcon(R.drawable.ic_launcher_background);
        fontMenu.setHeaderTitle("选择字体大小");
        fontMenu.add(0, FONT_10, 0, "10号字体");
        fontMenu.add(0, FONT_12, 0, "12号字体");
        fontMenu.add(0, FONT_14, 0, "14号字体");
        fontMenu.add(0, FONT_16, 0, "16号字体");
        fontMenu.add(0, FONT_18, 0, "18号字体");
        menu.add(0, PLAIN_ITEM, 0, "普通选项");
        SubMenu colorMenu = menu.addSubMenu("颜色");
        colorMenu.setIcon(R.drawable.ic_launcher_background);
        colorMenu.setHeaderIcon(R.drawable.ic_launcher_foreground);
        colorMenu.setHeaderTitle("选择文字颜色");
        colorMenu.add(0, FONT_RED, 0, "红色");
        colorMenu.add(0, FONT_GREEN, 0, "绿色");
        colorMenu.add(0, FONT_BLUE, 0, "蓝色");
        return super.onCreateOptionsMenu(menu);
    }

    public boolean onOptionsItemSelected(MenuItem mi) {
        switch (mi.getItemId()) {
            case FONT_10:
                edit.setTextSize(10 * 2);
                break;
            case FONT_12:
                edit.setTextSize(12 * 2);
                break;
            case FONT_14:
                edit.setTextSize(14 * 2);
                break;
            case FONT_16:
                edit.setTextSize(16 * 2);
                break;
            case FONT_18:
                edit.setTextSize(18 * 2);
                break;
            case FONT_RED:
                edit.setTextColor(Color.RED);
                break;
            case FONT_GREEN:
                edit.setTextColor(Color.GREEN);
                break;
            case FONT_BLUE:
                edit.setTextColor(Color.BLUE);
                break;
            case PLAIN_ITEM:
                Toast toast = Toast.makeText(MainActivity.this, "您点击了普通菜单项", Toast.LENGTH_SHORT);
                toast.show();
                break;
        }
        return true;
    }
}

设置与菜单项关联的Activity-跳转Activity

package com.example.myapplication;

import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

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

    public boolean onCreateOptionsMenu(Menu menu) {
        SubMenu prog = menu.addSubMenu("启动程序");
        prog.setHeaderTitle("请选择你要启动的程序");
        prog.setHeaderIcon(R.drawable.ic_launcher_background);
        MenuItem item = prog.add("查看Swift");
        item.setIntent(new Intent(this, OthterActivity.class));
        return super.onCreateOptionsMenu(menu);
    }

}

上下文菜单

package com.example.myapplication;

import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
    final int MENU1 = 0x111;
    final int MENU2 = 0x112;
    final int MENU3 = 0x113;
    TextView txt;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        txt = findViewById(R.id.txt);
        registerForContextMenu(txt);        //常按
    }

    public void onCreateContextMenu(ContextMenu menu, View source, ContextMenu.ContextMenuInfo menuInfo) {
        menu.add(0, MENU1, 0, "红色");
        menu.add(0, MENU2, 0, "绿色");
        menu.add(0, MENU3, 0, "蓝色");
        menu.setGroupCheckable(0, true, true);
        menu.setHeaderIcon(R.drawable.ic_launcher_foreground);
        menu.setHeaderTitle("选择背景色");
    }

    public boolean onContextItemSelected(MenuItem mi) {
        switch (mi.getItemId()) {
            case MENU1:
                mi.setChecked(true);
                txt.setBackgroundColor(Color.RED);
                break;
            case MENU2:
                mi.setChecked(true);
                txt.setBackgroundColor(Color.GREEN);
                break;
            case MENU3:
                mi.setChecked(true);
                txt.setBackgroundColor(Color.BLUE);
                break;
        }
        return true;
    }
}

使用XML资源文件定义菜单

package com.example.myapplication;

import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.PopupMenu;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
    PopupMenu popupMenu = null;

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

    public void onPopupButtonClick(View button) {
        popupMenu = new PopupMenu(this, button);
        getMenuInflater().inflate(R.layout.popup_menu, popupMenu.getMenu());
        popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                switch (item.getItemId()) {
                    case R.id.exit:
                        popupMenu.dismiss();
                        break;
                    default:
                        Toast.makeText(MainActivity.this, "您单击了[" + item.getTitle() + "]菜单项", Toast.LENGTH_SHORT).show();
                }
                return true;
            }

        });
        popupMenu.show();
    }


}
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
	<item
		android:id="@+id/search"
		android:icon="@android:drawable/ic_menu_search"
		android:title="查找" />
	<item
		android:id="@+id/add"
		android:icon="@android:drawable/ic_menu_add"
		android:title="添加" />
	<item
		android:id="@+id/edit"
		android:icon="@android:drawable/ic_menu_edit"
		android:title="编辑">
		<menu>
			<item
				android:id="@+id/copy"
				android:title="复制" />
			<item
				android:id="@+id/cut"
				android:title="剪切" />			
			<item
				android:id="@+id/paste"
				android:title="粘贴" />			
		</menu>
	</item>
	<item
		android:id="@+id/exit"
		android:title="隐藏菜单" />
</menu>
发布了349 篇原创文章 · 获赞 161 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/qq_42192693/article/details/103638063