導航:首頁 > 操作系統 > android菜單

android菜單

發布時間:2022-02-25 21:40:58

A. android中的菜單menu可以在屏幕上一直顯示嗎

不可以,menu是需要觸發了menu這個按鍵才會顯示出來。

菜單是用戶界面中最常見的元素之一,使用非常頻繁,在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

<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"android:layout_width="fill_parent"
android:layout_height="fill_parent">

<TextViewandroid: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,菜單則不會顯示。

(Menumenu)

@Override
(Menumenu){
/*
*
*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)方法為菜單項注冊事件

(MenuItemitem)

@Override
(MenuItemitem){
switch(item.getItemId()){

caseMenu.FIRST+1:

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

break;

caseMenu.FIRST+2:

Toast.makeText(this,"保存菜單被點擊了",Toast.LENGTH_LONG).show();

break;

caseMenu.FIRST+3:

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

break;

caseMenu.FIRST+4:

Toast.makeText(this,"添加菜單被點擊了",Toast.LENGTH_LONG).show();

break;

caseMenu.FIRST+5:

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

break;

caseMenu.FIRST+6:

Toast.makeText(this,"發送菜單被點擊了",Toast.LENGTH_LONG).show();

break;

}

returnfalse;

}

4.完整代碼

packagecom.android.menu;

importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.view.Menu;
importandroid.view.MenuItem;
importandroid.widget.Toast;

{
/**.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

@Override
(Menumenu){
/*
*
*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
(MenuItemitem){
switch(item.getItemId()){

caseMenu.FIRST+1:

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

break;

caseMenu.FIRST+2:

Toast.makeText(this,"保存菜單被點擊了",Toast.LENGTH_LONG).show();

break;

caseMenu.FIRST+3:

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

break;

caseMenu.FIRST+4:

Toast.makeText(this,"添加菜單被點擊了",Toast.LENGTH_LONG).show();

break;

caseMenu.FIRST+5:

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

break;

caseMenu.FIRST+6:

Toast.makeText(this,"發送菜單被點擊了",Toast.LENGTH_LONG).show();

break;

}

returnfalse;

}

@Override
publicvoidonOptionsMenuClosed(Menumenu){
Toast.makeText(this,"選項菜單關閉了",Toast.LENGTH_LONG).show();
}

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

//如果返回false,此方法就把用戶點擊menu的動作給消費了,onCreateOptionsMenu方法將不會被調用

returntrue;

}
}

5.運行效果

B. android開發中返回上一級菜單是怎麼實現的

這個問題 提的太隨意了吧。

菜單層級怎麼來的?是你的頁面還是系統菜單。
你的頁面的話是 多個activity還是單個頁面中layout層級,還是ActivityGroup中的?

C. android點擊menu鍵如何選擇使用不同的菜單

什麼叫【選擇使用不同的菜單】?menu中最多顯示8個,超過8個會自動添加一個【更多】,點擊後顯示其他的,你是問怎麼設置菜單裡面的內容還是什麼?

D. android怎樣實現菜單欄的按鈕

千鋒扣丁學堂Android開發為您解答:
在 acvitity類中,定義2個類的成員變數
protected static final int Menu_About = Menu.FIRST;
protected static final int Menu_Exit = Menu.FIRST+1;
在類的空白處,右鍵滑鼠按鈕,點[Source]後出現的彈出菜單里點[overried/implments method].
在彈出的對話框里,在Activity里選上onCreateOptionMenu(Menu),點 OK 按鈕.
在程序類代碼會自動覆寫出代碼:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
return super.onCreateOptionsMenu(menu);
}
將 return super.onCreateOptionsMenu(menu); 這句注釋掉.
然後在裡面加入創建菜單項代碼:
super.onCreateOptionsMenu(menu);
menu.add(0,Menu_About,0,"關於").setIcon(R.drawable.icon);
menu.add(0,Menu_Exit,0,"退出").setIcon(R.drawable.icon);
return true;
setIcon(R.drawable.icon); 是設置菜單上的圖片,如果不想要,可以取消.
如何響應菜單被按下的事件呢?需要覆寫onOptionsItemSelected這個方法.
在類的空白處,右鍵滑鼠按鈕,點[Source]後出現的彈出菜單里點[overried/implments method].
在彈出的對話框里,在Activity里選上onOptionsItemSelected(MenuItem ),點 OK 按鈕.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
return super.onOptionsItemSelected(item);
}
把 return super.onOptionsItemSelected(item);注釋掉,寫上
super.onOptionsItemSelected(item);
switch(item.getItemId())
{
case Menu_About:
break;
case Menu_Exit:
break;
}
return true;
如何判斷是哪個按鈕被按了呢?根據item.getItemId()方法獲得某個菜單項的ID,就是我們在類中定義的
protected static final int Menu_About = Menu.FIRST;
protected static final int Menu_Exit = Menu.FIRST+1;
這兩個.
剩下的工作就是想對應某項實現的具體功能了.
正常情況下,菜單不顯示出來的.只有在改activity顯示的時候,按鍵盤上的"MENU"才會顯示出來.

E. android中怎麼讓menu菜單顯示在屏幕左上角

用慣了Android的人在剛拿到iPhone的時候,總是會習慣性的用手指從狀態欄往下拖一下,這都是給Notification鬧的。
不過Notification也確實是1個不錯的提示工具,不幹擾正常的操作,事後還可以再翻看詳細的內容,點擊後還可以進入相關的畫面查看更具體的內容。
今天我就以代碼為主的形式來介紹Notification的使用,包括基本用法,自定義的View,以及更多的控制方法。
另一種Android中常用到的提示方法Toast的用法請參見《教程:在Android中使用Toast進行提示》
我們先看下Notification的幾個主要組成部分:
Icon:不解釋
Ticker Text:Notification剛出來的時候,在狀態欄上滾動的字幕,如果很長,會自動分割滾動

Content Title:Notification展開後的標題
Content Text:Notification展開後的內容

Notification的一般用法
取得NotificationManager
private NotificationManager mNotificationManager;
mNotificationManager = (NotificationManager)
getSystemService(Context.NOTIFICATION_SERVICE);
創建Notification並且顯示
//Notification的滾動提示
String tickerText = "My notification, It's a long text! Hello World desiyo?";
//Notification的圖標,一般不要用彩色的
int icon = R.drawable.icon_02241_3;

//contentTitle和contentText都是標準的Notification View的內容
//Notification的內容標題,拖下來後看到的標題
String contentTitle="My notification";
//Notification的內容
String contentText="Hello World!";

//Notification的Intent,即點擊後轉向的Activity
Intent notificationIntent = new Intent(this, this.getClass());
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
notificationIntent, 0);

//創建Notifcation
Notification notification = new Notification(icon, tickerText, System.currentTimeMillis());
//設定Notification出現時的聲音,一般不建議自定義
notification.defaults |= Notification.DEFAULT_SOUND;
//設定如何振動
notification.defaults |= Notification.DEFAULT_VIBRATE;
//指定Flag,Notification.FLAG_AUTO_CANCEL意指點擊這個Notification後,立刻取消自身
//這符合一般的Notification的運作規范
notification.flags|=Notification.FLAG_AUTO_CANCEL;
notification.setLatestEventInfo(this, contentTitle, contentText, contentIntent);
//顯示這個notification
mNotificationManager.notify(HELLO_ID, notification);
這是最基本的應用,可以說除了找個合適的圖標以外,其它都很簡單。

使用自定義View的Notification
同Toast一樣,我們也可以自已指定1個View來作為Notification展開後的顯示內容,比如說在Android Market中下載的時候,Notification中會顯示當前下載的進度,那麼我們也來模擬1個這樣的效果吧。
首先給出View的定義文件:notification_view_sample.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="3dp"
>
<ImageView android:id="@+id/notificationImage"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:src="@android:drawable/stat_sys_download"
/>
<TextView android:id="@+id/notificationTitle"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_toRightOf="@id/notificationImage"
android:layout_alignParentRight="true"
android:paddingLeft="6dp"
android:textColor="#FF000000"
/>
<TextView android:id="@+id/notificationPercent"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_below="@id/notificationImage"
android:paddingTop="2dp"
android:textColor="#FF000000"
/>
<ProgressBar android:id="@+id/notificationProgress"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_below="@id/notificationTitle"
android:layout_alignLeft="@id/notificationTitle"
android:layout_alignParentRight="true"
android:layout_alignTop="@id/notificationPercent"
android:paddingLeft="6dp"
android:paddingRight="3dp"
android:paddingTop="2dp"
style="?android:attr/progressBarStyleHorizontal"
/>
</RelativeLayout>
RelativeLayout的使用,可以參考:《教程:Android各種Layout特性和使用匯總(一)》

F. android 菜單 怎麼讓同一個選項菜單在任何一個頁面都能顯示

單獨寫一個菜單的menu.xml,建一個Menu的類setcontentview(R.layout.menu),在Menu類里初始化控制項,寫監聽事件等,在每個要彈菜單的類中new Menu();

G. 關於Android中標題欄上的這個菜單

這個可以用官方的FloatingActionButton做出來,需要Demo的話請追問。

H. Android中menu菜單中的圖片是怎麼加進去的

給這個圖片按鈕添加一個事件, button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent=new Intent();
intent.setClass(當前Activity.this, 下一個Activity.class);
startActivity(intent);
當前Activity.finish();//關閉當前Activity
}
});
與普通按鈕沒有什麼區別,一個就是有圖片的,一個沒有嘛,對它做事件都 一樣,只不過顯示效果不一樣。

I. Android 模擬器中按菜單Menu鍵彈出菜單項MenuItem,點擊菜單項中的「退出」沒反應

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
/*
*
* add()方法的四個參數,依次是:
*
* 1、組別,如果不分組的話就寫Menu.NONE,
*
* 2、Id,這個很重要,Android根據這個Id來確定不同的菜單
*
* 3、順序,那個菜單現在在前面由這個參數的大小決定
*
* 4、文本,菜單的顯示文本
*/
//圖標文件實現android系統自帶的文件
menu.add(Menu.NONE, Menu.FIRST + 1, 1, "保存").setIcon(android.R.drawable.ic_menu_save);
menu.add(Menu.NONE, Menu.FIRST + 2, 2, "添加").setIcon(android.R.drawable.ic_menu_add);
// menu.add(Menu.NONE, Menu.FIRST + 3, 3, "刪除").setIcon(android.R.drawable.ic_menu_delete);
// menu.add(Menu.NONE, Menu.FIRST + 4, 4, "發送").setIcon(android.R.drawable.ic_menu_send);
menu.add(Menu.NONE, Menu.FIRST + 5, 5, "幫助").setIcon(android.R.drawable.ic_menu_help);
menu.add(Menu.NONE, Menu.FIRST + 6, 6, "退出").setIcon(android.R.drawable.ic_menu_close_clear_cancel);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
// TODO Auto-generated method stub
switch(item.getItemId()){
case Menu.FIRST + 1:
Toast.makeText(WqtMainActivity.this, "保存菜單被點擊了!", Toast.LENGTH_LONG).show();
//intent = new Intent(MenuActivity.this,Myhandler.class);
//startActivity(intent);
//overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
break;
case Menu.FIRST + 2:
Toast.makeText(WqtMainActivity.this, "添加菜單被點擊了!", Toast.LENGTH_LONG).show();
break;
case Menu.FIRST + 3:
Toast.makeText(WqtMainActivity.this, "刪除菜單被點擊了!", Toast.LENGTH_LONG).show();
break;
case Menu.FIRST + 4:
Toast.makeText(WqtMainActivity.this, "發送菜單被點擊了!", Toast.LENGTH_LONG).show();
//通知在狀態欄顯示的圖標
//notification.icon = android.R.drawable.ic_lock_silent_mode_off;
//通知的內容
//notification.tickerText = "發送菜單被點擊了!";
//通知時發出的聲音
//notification.defaults = Notification.DEFAULT_SOUND;
//intent = new Intent(MenuActivity.this,mNotification.class);
//intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);
//pendindIntent = PendingIntent.getActivity(MenuActivity.this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
//notification.setLatestEventInfo(MenuActivity.this, "按鈕", "發送按鈕", pendindIntent);
//notificationManager.notify(913, notification);
break;
case Menu.FIRST + 5:
Toast.makeText(WqtMainActivity.this, "幫助菜單被點擊了!", Toast.LENGTH_LONG).show();
break;
case Menu.FIRST + 6:
AlertDialog alertDialog = new AlertDialog.Builder(WqtMainActivity.this)
.setTitle("提示!")
.setIcon(R.drawable.ask)
.setMessage("您確定要退出系統嗎?")
.setPositiveButton("確定",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
System.exit(0);
dialog.cancel(); //提示對話框關閉
}
})
.setNegativeButton("取消",
new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.cancel(); //關閉對話框
}
}).create();
alertDialog.show();
break;
}
return super.onMenuItemSelected(featureId, item);
}

J. 做個android系統的菜譜菜單,

http://search.apkbus.com/f/discuz?mod=forum&formhash=b59cc4be&srchtype=title&srhfid=&srhlocality=forum%3A%3Aindex&sId=5578702&ts=1377062361&cuId=220127&cuName=281749743&gId=16&agId=3&egIds=&fmSign=&ugSign16=&ugSign3=&ext_ffids=&ext_vgIds=0&sign=&charset=utf-8&source=discuz&fId=0&q=%E8%8F%9C%E8%B0%B1&srchtxt=%E8%8F%9C%E8%B0%B1&searchsubmit=true
很多demo

閱讀全文

與android菜單相關的資料

熱點內容
人保送車主惠app上怎麼年檢 瀏覽:600
android手機開機密碼 瀏覽:478
linux查看某個進程命令 瀏覽:523
閑置的騰訊雲伺服器 瀏覽:437
rar壓縮包mac 瀏覽:626
php混淆加密工具 瀏覽:581
java把數字拆分 瀏覽:464
如何下載svn伺服器舊版本 瀏覽:559
命令與征服4攻略 瀏覽:914
實數四則運演算法則概念 瀏覽:294
cs16優化命令 瀏覽:871
Minecraft雲伺服器免費 瀏覽:828
png壓縮最小 瀏覽:182
老韓綜app怎麼看不了了 瀏覽:229
只有一個程序員的體驗 瀏覽:323
用伺服器地址怎麼有網 瀏覽:552
路由器伺服器昵稱是什麼 瀏覽:715
程序員男友消失了 瀏覽:401
程序員搜索框自動提示 瀏覽:28
android44api20 瀏覽:677