1. 程式人生 > >Android 選單(OptionMenu)大全 建立你自己的選單

Android 選單(OptionMenu)大全 建立你自己的選單

選單是使用者介面中最常見的元素之一,使用非常頻繁,在Android中,選單被分為如下三種,選項選單(OptionsMenu)、上下文選單(ContextMenu)和子選單(SubMenu),今天這講是OptionsMenu 

  一、概述

  public boolean onCreateOptionsMenu(Menu menu):使用此方法呼叫OptionsMenu 。

  public boolean onOptionsItemSelected(MenuItem item):選中選單項後發生的動作。

  public void onOptionsMenuClosed(Menu menu):選單關閉後發生的動作。

  public boolean onPrepareOptionsMenu(Menu menu):選項選單顯示之前onPrepareOptionsMenu方法會被呼叫,你可以用此方法來根據打當時的情況調整選單。

  public boolean onMenuOpened(int featureId, Menu menu):單開啟後發生的動作。

  二、預設樣式

  預設樣式是在螢幕底部彈出一個選單,這個選單我們就叫他選項選單OptionsMenu,一般情況下,選項選單最多顯示2排每排3個選單項,這些選單項有文字有圖示,也被稱作Icon Menus,如果多於6項,從第六項開始會被隱藏,在第六項會出現一個More裡,點選More才出現第六項以及以後的選單項,這些選單項也被稱作Expanded Menus。下面介紹。

1.main.xml 複製程式碼 <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation
="vertical" android:layout_width="fill_parent"
android:layout_height
="fill_parent"><TextView android:layout_width="wrap_content"
android:layout_height
="wrap_content" android:text="請點選 Menu鍵顯示選項選單"
android:id
="@+id/TextView02"/></LinearLayout> 複製程式碼

  2。過載onCreateOptionsMenu(Menu menu)方法

  過載onCreateOptionsMenu(Menu menu)方法,並在此方法中新增選單項,最後返回true,如果false,選單則不會顯示。

public boolean onCreateOptionsMenu(Menu menu) 複製程式碼 @Override
public boolean onCreateOptionsMenu(Menu menu) {
/*
*
* add()方法的四個引數,依次是:
*
* 1、組別,如果不分組的話就寫Menu.NONE,
*
* 2、Id,這個很重要,Android根據這個Id來確定不同的選單
*
* 3、順序,那個選單現在在前面由這個引數的大小決定
*
* 4、文字,選單的顯示文字
*/

menu.add(Menu.NONE, Menu.FIRST
+1, 5, "刪除").setIcon(

android.R.drawable.ic_menu_delete);

// setIcon()方法為選單設定圖示,這裡使用的是系統自帶的圖示,同學們留意一下,以

// android.R開頭的資源是系統提供的,我們自己提供的資源是以R開頭的
menu.add(Menu.NONE, Menu.FIRST
+2, 2, "儲存").setIcon(

android.R.drawable.ic_menu_edit);

menu.add(Menu.NONE, Menu.FIRST
+3, 6, "幫助").setIcon(

android.R.drawable.ic_menu_help);

menu.add(Menu.NONE, Menu.FIRST
+4, 1, "新增").setIcon(

android.R.drawable.ic_menu_add);

menu.add(Menu.NONE, Menu.FIRST
+5, 4, "詳細").setIcon(

android.R.drawable.ic_menu_info_details);

menu.add(Menu.NONE, Menu.FIRST
+6, 3, "傳送").setIcon(

android.R.drawable.ic_menu_send);

returntrue;

}
複製程式碼

  3。為選單項註冊事件

  使用onOptionsItemSelected(MenuItem item)方法為選單項註冊事件

public boolean onOptionsItemSelected(MenuItem item) 複製程式碼 @Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {

case Menu.FIRST +1:

Toast.makeText(
this, "刪除選單被點選了", Toast.LENGTH_LONG).show();

break;

case Menu.FIRST +2:

Toast.makeText(
this, "儲存選單被點選了", Toast.LENGTH_LONG).show();

break;

case Menu.FIRST +3:

Toast.makeText(
this, "幫助選單被點選了", Toast.LENGTH_LONG).show();

break;

case Menu.FIRST +4:

Toast.makeText(
this, "新增選單被點選了", Toast.LENGTH_LONG).show();

break;

case Menu.FIRST +5:

Toast.makeText(
this, "詳細選單被點選了", Toast.LENGTH_LONG).show();

break;

case Menu.FIRST +6:

Toast.makeText(
this, "傳送選單被點選了", Toast.LENGTH_LONG).show();

break;

}

returnfalse;

}
複製程式碼

  4。其他按需要過載

  完整程式碼

DefaultMenu 複製程式碼 package com.wjq.menu;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

publicclass DefaultMenu extends Activity {
/** Called when the activity is first created. */
@Override
publicvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
/*
*
* add()方法的四個引數,依次是:
*
* 1、組別,如果不分組的話就寫Menu.NONE,
*
* 2、Id,這個很重要,Android根據這個Id來確定不同的選單
*
* 3、順序,那個選單現在在前面由這個引數的大小決定
*
* 4、文字,選單的顯示文字
*/

menu.add(Menu.NONE, Menu.FIRST
+1, 5, "刪除").setIcon(

android.R.drawable.ic_menu_delete);

// setIcon()方法為選單設定圖示,這裡使用的是系統自帶的圖示,同學們留意一下,以

// android.R開頭的資源是系統提供的,我們自己提供的資源是以R開頭的
menu.add(Menu.NONE, Menu.FIRST
+2, 2, "儲存").setIcon(

android.R.drawable.ic_menu_edit);

menu.add(Menu.NONE, Menu.FIRST
+3, 6, "幫助").setIcon(

android.R.drawable.ic_menu_help);

menu.add(Menu.NONE, Menu.FIRST
+4, 1, "新增").setIcon(

android.R.drawable.ic_menu_add);

menu.add(Menu.NONE, Menu.FIRST
+5, 4, "詳細").setIcon(

android.R.drawable.ic_menu_info_details);

menu.add(Menu.NONE, Menu.FIRST
+6, 3, "傳送").setIcon(

android.R.drawable.ic_menu_send);

returntrue;

}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {

case Menu.FIRST +1:

Toast.makeText(
this, "刪除選單被點選了", Toast.LENGTH_LONG).show();

break;

case Menu.FIRST +2:

Toast.makeText(
this, "儲存選單被點選了", Toast.LENGTH_LONG).show();

break;

case Menu.FIRST +3:

Toast.makeText(
this, "幫助選單被點選了", Toast.LENGTH_LONG).show();

break;

case Menu.FIRST +4:

Toast.makeText(
this, "新增選單被點選了", Toast.LENGTH_LONG).show();

break;

case Menu.FIRST +5:

Toast.makeText(
this, "詳細選單被點選了", Toast.LENGTH_LONG).show();

break;

case Menu.FIRST +6:

Toast.makeText(
this, "傳送選單被點選了", Toast.LENGTH_LONG).show();

break;

}

returnfalse;

}

@Override
publicvoid onOptionsMenuClosed(Menu menu) {
Toast.makeText(
this, "選項選單關閉了", Toast.LENGTH_LONG).show();
}

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
Toast.makeText(
this,
"選項選單顯示之前onPrepareOptionsMenu方法會被呼叫,你可以用此方法來根據打當時的情況調整選單",
Toast.LENGTH_LONG).show();

// 如果返回false,此方法就把使用者點選menu的動作給消費了,onCreateOptionsMenu方法將不會被呼叫returntrue;

}
}
複製程式碼

5.效果瀏覽

  

  三、自定義樣式

1.gridview_menu.xml

   首先自定義選單介面,我是GridView來包含選單項,4列3行

2.item_menu.xml

選單項的現實樣式,一個圖示和一個文字。

  3.定義

程式碼 4.public boolean onMenuOpened(int featureId, Menu menu)

如果第一次開啟則設定檢視,否則直接顯示menuDialog檢視。

5.private SimpleAdapter getMenuAdapter(String[] menuNameArray,

為選單新增選單項。

6.public boolean onCreateOptionsMenu(Menu menu) 7.protected void onCreate(Bundle savedInstanceState) 完整程式碼

原始碼下載點選這裡

效果瀏覽

          

相關推薦

Android 選單(OptionMenu)大全 建立自己選單

選單是使用者介面中最常見的元素之一,使用非常頻繁,在Android中,選單被分為如下三種,選項選單(OptionsMenu)、上下文選單(ContextMenu)和子選單(SubMenu),今天這講是OptionsMenu    一、概述   public bool

如何建立自己的Docker映象

Alpine Linux的什麼是Docker社群所鍾愛?輕量級容器意味著更多的計算資源。Alpine Linux的確是輕型的,也就是說Alpine Linux是面向安全應用的輕量級 Linux 發行版。你喜歡存錢嗎?我喜歡存錢。更好地資源利用就像擁有幸福的銀行

定製android主介面。讓自己寫的Android的Launcher成為系統中第一個啟動的,也是唯一的Launcher.

由於是二次轉載, 沒招到原文連結, 敬請原作者諒解。 如果你要定製一個Android系統,你想用你自己的Launcher(Home)作主介面來替換Android自己的Home,而且不希望使用者安裝的Launcher來替換掉你的Launcher. 我們可以通過修改Frame

使用 Python 建立自己的 Shell (上)

我很想知道一個shell(像 bash,csh 等)內部是如何工作的。於是為了滿足自己的好奇心,我使用 Python 實現了一個名為 yosh(Your Own Shell)的 Shell。本文章所介紹的概念也可以應用於其他程式語言。 (提示:你可以在這裡

使用 Python 建立自己的 Shell(下)

上篇中,我們已經建立了一個主迴圈、切分了命令輸入,以及通過fork和exec執行命令。在這部分,我們將會解決剩下的問題。首先,cd test_dir2命令無法修改我們的當前目錄。其次,我們仍無法優雅地從shell中退出。 步驟 4:內建命令 “cd

建立自己的高效能即時訊息IM伺服器

移動網際網路,離不開即時訊息IM伺服器 原料:openfire(我們不照搬,我們將他徹底改造,僅僅用一個框架) 經過努力,同時線上使用者輕鬆超過30萬 現在開始改造過程 1.download 最新openfire src 2.改造...找時間寫了

android Toast大全(五種情形)建立屬於自己的Toast

right 其它 activity make div ins case tco title 搬運而來,如有雷同。絕非意外! Toast用於向用戶顯示一些幫助/提示。以下我做了5中效果,來說明Toast的強大,定義一個屬於你自己的Toast。

Android 建立多選選單,寫setMultiChoiceItems()出現問題,提示不存在該方法的解決方法

程式碼如下: 報錯如下: 在CSDN部落格與論壇查過,也有人有類似的問題,但並沒有得到解決,最後想了好久後明白了,解決方法如下: 通過檢視setMultiChoiceItems()程式碼提示: 可知,第二個引數接受的是boolean [],而不是Boole

右鍵選單,動態建立

case WM_RBUTTONDOWN://彈出右鍵選單         {         CMenu menu1;      &nb

微信開發學習總結(四)——自定義選單(1)——自定義選單建立介面

一、自定義選單建立介面說明 自定義選單能夠幫助公眾號豐富介面,讓使用者更好更快地理解公眾號的功能。開啟自定義選單後,公眾號介面如圖所示: 請注意: ①自定義選單最多包括3個一級選單,每個一級選單最多包含5個二級選單。 ②一級選單最多4個漢字,二級選單最多7個漢字,多出來的部分將

微信中curl返回false-curl呼叫微信建立自定義選單返回false

我在微信建立選單欄的時候出現了curl返回結果false,我查了後才發現多了空格,為了以後不犯錯,記錄一下: $url = ' https://api.weixin.qq.com/cgi-bin/menu/create?access_token='.$accessToken; 在這行程式碼中

cad 建立自定義選單

[assembly: CommandClass(typeof(clist.Main))] //[assembly:ExtensionApplication(typeof(clist.Main))] namespace clist { public class Main {

Android自定義控制元件----繼承ViewGroup側滑選單3,普通側滑選單,新增選單切換按鈕(完結)

專案結構: 思路: 對外暴露一個選單開啟和關閉選單的方法toggle 當開啟時this.smoothScrollTo(0, 0);滑動選單顯示 當關閉時this.smoothScrollTo(mMenuWidth, 0);選單隱藏

如何在以太坊上建立屬於自己的ERC20代幣

本文從技術角度詳細介紹如何基於以太坊ERC20建立代幣的流程。 (需要幫忙代做的可以聯絡V信:WangSanfeng0417) 寫在前面 本文所講的代幣是使用以太坊智慧合約建立,閱讀本文前,你應該對以太坊、智慧合約有所瞭解,如果你還不瞭解,建議你先看以太坊是什麼

Android Studio 使用ViewPager + Fragment實現滑動選單Tab效果 --簡易版

描述:         之前有做過一個記賬本APP,拿來練手的,做的很簡單,是用Eclipse開發的;         最近想把這個APP重新完善一下,添加了一些新的功能,並選用Android Studio來開發;         APP已經完善了一部分,現在就想把已經做好的功能整理一下,記錄下來。 效果圖

Android TextView自定義選中彈出選單記筆記功能

效果圖 兩種方案實現 一、 通過onActionItemClicked 完整程式碼: mManusTv.setCustomSelectionActionModeCallback(new ActionMode.Callback() {

建立自定義選單

<?php header("Content-type:text/html;charset=utf-8"); /** * 建立自定義選單 */ $menuData = '{ "button":[ { "type":"click", "name":"紫月", "k

建立級聯選單

實現效果:    知識運用:   DropDownItems選單項集合的Add方法   //將指定的選單項新增到選單項集合   public int Add(ToolStripItem value) 實現程式碼: private void Form1_Load(ob

Android 8.0 Settings往介面新增選單

1、SettingsActivity.java 檔案下的doUpdateTilesList方法裡新增: setTileEnabled(new ComponentName(packageName, Settings.WtkSecurityLockersActivity.class.ge

php curl返回false填坑記-curl呼叫微信建立自定義選單返回false

首先宣告一點,這個錯誤可能在你的開發生涯中不會遇到,除非你直接複製了微信公眾平臺的api地址。不過這應該算是php中curl擴充套件的一個bug,為什麼是bug呢?讓我們仔細來看。 下邊是示例程式碼,程式碼的功能是呼叫微信公眾平臺的建立自定義選單介面來建立自定義選單。 建