您的位置 首页 分销

Android系列之UI组件—-Menu菜单

从官方文档了解到,从Android3.0(API level 11)开始,Android设备不再要求提供一个专门的菜单按钮,转而推荐使用ActionBar。所以现在市面上很多新设备使用三

从官方文档了解到,从Android3.0(API level 11)开端,Android设备不再要求供给一个专门的菜单按钮,转而引荐运用ActionBar。所以现在市面上许多新设备运用三个虚拟按键,并不再额定供给菜单按钮。

由于Android版别的开展,关于菜单的支撑各个版别有很大的差异,而Android3.0是个分水岭,大约能够分为下面三类:

OptionMenu和ActionBar:一些操作的调集,假如开发的渠道在Android3.0之上,引荐运用ActionBar,假如开发的渠道在Android2.3或之下,仍是能够运用OptionMenu的。

ContextMenu和ActionMode:ContextMenu是一个起浮的窗口办法展现一个选项列表,ActionMode是一个显现在屏幕顶部的操作栏,答应用户挑选多个选项,ActionMode在Android3.0之后才有支撑。

Popup Menu:PopupMenu是固定在View上的模态菜单,以弹出的办法显现,在Android3.0之后才有支撑。

【在XML中界说一个菜单】

Android供给了规范的XML格局的资源文件来界说菜单项,而且对一切菜单类型都支撑,引荐运用XML资源文件来界说菜单,之后再把它Inflater到Activity或许Fragment中,而不是在Activity中运用代码声明。

而菜单的XML资源文件,需求创立在/res/menu/目录下,而且包括一下几个元素:

:界说一个Menu,是一个菜单资源文件的根节点,里边能够包括一个或许多个元素。

:创立一个MenuItem,代表了菜单中一个选项。

:对菜单项进行分组,能够以组的办法操作菜单项。

元素除了惯例的id、icon、title特点的支撑,还有一个重要的特点:android:showAsAction,这个特点是起兼容性的,描绘了在Android的高版别中,菜单项何时以何种办法加入到ActionBar中。

是对菜单进行分组,分组后的菜单显现作用并没有差异,仅有的差异在于能够针对菜单组进行操作,这样关于分类的菜单项,操作起来更便利,供给如下的操作:

Menu.setGroupCheckable():菜单组内的菜单是否都可选。

Menu.setGroupVisible():是否躲藏菜单组的一切菜单。

Menu.setGroupEnabled():菜单组的菜单是否有用。

假如菜单项需求单选或许多选,能够运用android:checkableBehavior特点设置,它能够对单个或许设置一个组,这个特点承受三个参数:single,单选;all,多选,none,没有Checked的选项,默许。

当创立好一个XML菜单资源文件之后,能够运用MenuInflater.inflate()办法填充菜单资源,使XML资源变成一个可编程的目标。

一、Options menu选项菜单:

OptionMenu,选项菜单,单击手机上的菜单键(MENU)呈现,有必要设备具有菜单按钮才能够触发。由于屏幕的约束,最多只能展现六个菜单项,假如界说的菜单项超出了六个,其他的菜单项将被躲藏,第六个菜单将会显现“更多”,点击打开更多的菜单。虽然在Android3.0之后不再引荐运用选项菜单,可是假如运用了,在Android3.0之后的设备上,选项菜单项将被默许转移到ActionBar中,这个能够经过android:showAsAction特点操控。

创立选项菜单的中心过程:

(1)重写Activity的onCreateOptionMenu(Menu menu)办法,当菜单第一次被加载时调用

(2)调用Menu 的add( )办法增加菜单项(MenuItem),一起能够调用MenuItem的setIcon()办法为菜单项设置图标(注:Android 3.0之后,即便增加了图标也不会显现)

(3)重写Activity的OptionsItemSelected(MenuItem item)来呼应菜单项(MenuItem)的点击事情

来看一下详细的代码完成:

新建Android工程MenuTest:

【办法一】经过配置文件增加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 //重写onCreateOptionMenu(Menu menu)办法,当菜单第一次被加载时调用

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 //重写OptionsItemSelected(MenuItem item)来呼应菜单项(MenuItem)的点击事情(依据id来区别是哪个item)

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/fenxiao/300475.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部