Android_(菜單)選項菜單


Android系統中菜單分為Options Menu、Context Menu、Sub Men三種

Options Menu和Context Menu屬於一級菜單

Sub Menu屬於Options Menu和Context Menu的子菜單

Sub Menu下不能再添加菜單,Android最多只能支持兩級菜單

 

選項菜單(Options Menu)在當前Activity中按下菜單鍵就會顯示

Android4.0一下默認在屏幕底部(我也不知道我的為什么默認是在右上角!!!)

常用以下方法使用 選項菜單

 

onCreateOptionsMenu(Menu menu):創建菜單,會在菜單第一次顯示時調用。

onPrepareOnptionsMenu(Menu menu): 准備顯示菜單,菜單每次顯示前調用。

onOptionsItemSelected(MenuItem item):菜單項被選中后處理選中的菜單項。

onMenuOpened(int featureId,Menu menu):菜單被打開的事件。

onOptionsMenuClosed(Menu menu):菜單被關閉的事件。

openOptionsMenu():調用打開菜單

closeOptionsMenu():調用關閉菜單

 

運行截圖:

程序結構:

 

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context="com.example.asus.gary_03.MainActivity">


    <EditText
        android:id="@+id/txt"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="輸入文字"
        android:editable="false"
        android:inputType="textPersonName" />
</LinearLayout>
activity_main.xml

 

package com.example.asus.gary_03;

import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.widget.EditText;
import android.widget.Toast;

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;

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

    public boolean onCreateOptionsMenu(Menu menu) {
        //向menu中添加字體大小的子菜單
        SubMenu fontMenu = menu.addSubMenu("字體大小");
        //設置菜單的圖標
        fontMenu.setIcon(android.R.drawable.btn_plus);
        //設置菜單頭的圖標
        fontMenu.setHeaderIcon(android.R.drawable.btn_default);
        //設置菜單頭的標題
        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中添加普通菜單項
        menu.add(0,PLAIN_ITEM,0,"普通菜單項");
        //向menu中添加文字顏色的子菜單
        SubMenu colorMenu = menu.addSubMenu("字體的顏色");
        colorMenu.setIcon(android.R.drawable.btn_plus);
        colorMenu.setHeaderIcon(android.R.drawable.btn_default);
        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;
    }

}
MainActivity

 

 一、界面布局

  只有一個EditText用來顯示測試的內容

 

二、實現程序

 

1、向menu中添加字體大小的子菜單

  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中添加普通菜單項
        menu.add(0,PLAIN_ITEM,0,"普通菜單項");
        //向menu中添加文字顏色的子菜單
        SubMenu colorMenu = menu.addSubMenu("字體的顏色");
        colorMenu.setIcon(android.R.drawable.btn_plus);
        colorMenu.setHeaderIcon(android.R.drawable.btn_default);
        colorMenu.setHeaderTitle("選擇文字的顏色");
        colorMenu.add(0,FONT_RED,0,"紅色");
        colorMenu.add(0,FONT_GREEN,0,"綠色");
        colorMenu.add(0,FONT_BLUE,0,"藍色");

 

2、實現對子菜單項的選擇

onOptionsItemSelected(MenuItem item):菜單項被選中后處理選中的菜單項。

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;
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM