<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Android系列之UI組件----Menu菜單

Android系列之UI組件----Menu菜單

作者: 時(shí)間:2016-09-12 來(lái)源:網(wǎng)絡(luò ) 收藏

從官方文檔了解到,從Android3.0(API level 11)開(kāi)始,Android設備不再要求提供一個(gè)專(zhuān)門(mén)的菜單按鈕,轉而推薦使用ActionBar。所以現在市面上很多新設備使用三個(gè)虛擬按鍵,并不再額外提供菜單按鈕。

本文引用地址:http://dyxdggzs.com/article/201609/304308.htm

因為Android版本的發(fā)展,對于菜單的支持各個(gè)版本有很大的區別,而Android3.0是個(gè)分水嶺,大概可以分為下面三類(lèi):

OptionMenu和ActionBar:一些操作的集合,如果開(kāi)發(fā)的平臺在A(yíng)ndroid3.0之上,推薦使用ActionBar,如果開(kāi)發(fā)的平臺在A(yíng)ndroid2.3或之下,還是可以使用OptionMenu的。

ContextMenu和ActionMode:ContextMenu是一個(gè)浮動(dòng)的窗口形式展現一個(gè)選項列表,ActionMode是一個(gè)顯示在屏幕頂部的操作欄,允許用戶(hù)選擇多個(gè)選項,ActionMode在A(yíng)ndroid3.0之后才有支持。

Popup Menu:PopupMenu是固定在View上的模態(tài)菜單,以彈出的方式顯示,在A(yíng)ndroid3.0之后才有支持。

【在XML中定義一個(gè)菜單】

Android提供了標準的XML格式的資源文件來(lái)定義菜單項,并且對所有菜單類(lèi)型都支持,推薦使用XML資源文件來(lái)定義菜單,之后再把它Inflater到Activity或者Fragment中,而不是在A(yíng)ctivity中使用代碼聲明。

而菜單的XML資源文件,需要創(chuàng )建在/res/menu/目錄下,并且包含一下幾個(gè)元素:

:定義一個(gè)Menu,是一個(gè)菜單資源文件的根節點(diǎn),里面可以包含一個(gè)或者多個(gè)元素。

:創(chuàng )建一個(gè)MenuItem,代表了菜單中一個(gè)選項。

:對菜單項進(jìn)行分組,可以以組的形式操作菜單項。

元素除了常規的id、icon、title屬性的支持,還有一個(gè)重要的屬性:android:showAsAction,這個(gè)屬性是起兼容性的,描述了在A(yíng)ndroid的高版本中,菜單項何時(shí)以何種方式加入到ActionBar中。

是對菜單進(jìn)行分組,分組后的菜單顯示效果并沒(méi)有區別,唯一的區別在于可以針對菜單組進(jìn)行操作,這樣對于分類(lèi)的菜單項,操作起來(lái)更方便,提供如下的操作:

Menu.setGroupCheckable():菜單組內的菜單是否都可選。

Menu.setGroupVisible():是否隱藏菜單組的所有菜單。

Menu.setGroupEnabled():菜單組的菜單是否有用。

如果菜單項需要單選或者多選,可以使用android:checkableBehavior屬性設置,它可以對單個(gè)或者設置一個(gè)組,這個(gè)屬性接受三個(gè)參數:single,單選;all,多選,none,沒(méi)有Checked的選項,默認。

當創(chuàng )建好一個(gè)XML菜單資源文件之后,可以使用MenuInflater.inflate()方法填充菜單資源,使XML資源變成一個(gè)可編程的對象。

一、Options menu選項菜單:

OptionMenu,選項菜單,單擊手機上的菜單鍵(MENU)出現,必須設備具有菜單按鈕才可以觸發(fā)。因為屏幕的限制,最多只能展示六個(gè)菜單項,如果定義的菜單項超出了六個(gè),其他的菜單項將被隱藏,第六個(gè)菜單將會(huì )顯示“更多”,點(diǎn)擊展開(kāi)更多的菜單。雖說(shuō)在A(yíng)ndroid3.0之后不再推薦使用選項菜單,但是如果使用了,在A(yíng)ndroid3.0之后的設備上,選項菜單項將被默認轉移到ActionBar中,這個(gè)可以通過(guò)android:showAsAction屬性控制。

創(chuàng )建選項菜單的核心步驟:

(1)重寫(xiě)Activity的onCreateOptionMenu(Menu menu)方法,當菜單第一次被加載時(shí)調用

(2)調用Menu 的add( )方法添加菜單項(MenuItem),同時(shí)可以調用MenuItem的setIcon()方法為菜單項設置圖標(注:Android 3.0之后,即使添加了圖標也不會(huì )顯示)

(3)重寫(xiě)Activity的OptionsItemSelected(MenuItem item)來(lái)響應菜單項(MenuItem)的點(diǎn)擊事件

來(lái)看一下具體的代碼實(shí)現:

新建Android工程MenuTest:

【方式一】通過(guò)配置文件添加Menu選項

(1)在res/menu/main.xml中定義菜單項。main.xml的代碼如下:

復制代碼

xmlns:tools=http://schemas.android.com/tools

tools:context=com.example.menutest.MainActivity >

android:id=@+id/start

android:orderInCategory=100

android:showAsAction=never

android:title=@string/start/>

android:id=@+id/over

android:orderInCategory=200

android:showAsAction=never

android:title=@string/over/>

復制代碼

注:第9行和第15行的字符串引用,需要提前在strings.xml文件中設置好。

(2)MainActivity.java:

復制代碼

1 package com.example.menutest;

2

3 import android.app.Activity;

4 import android.os.Bundle;

5 import android.view.Menu;

6 import android.view.MenuItem;

7 import android.widget.Toast;

8

9

10 public class MainActivity extends Activity {

11

12 @Override

13 protected void onCreate(Bundle savedInstanceState) {

14 super.onCreate(savedInstanceState);

15 setContentView(R.layout.activity_main);

16 }

17

18

19 //重寫(xiě)onCreateOptionMenu(Menu menu)方法,當菜單第一次被加載時(shí)調用

20 @Override

21 public boolean onCreateOptionsMenu(Menu menu) {

22 // Inflate the menu; this adds items to the action bar if it is present.

23 //填充選項菜單(讀取XML文件、解析、加載到Menu組件上)

24 getMenuInflater().inflate(R.menu.main, menu);

25 return true;

26 }

27

28 //重寫(xiě)OptionsItemSelected(MenuItem item)來(lái)響應菜單項(MenuItem)的點(diǎn)擊事件(根據id來(lái)區分是哪個(gè)item)


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>