跟我学Android之八 ActionBar与菜单

跟我学Android之八 ActionBar与菜单,第1张

概述视频课:https://edu.csdn.net/course/play/7621本章内容第1节菜单概述第2节选项菜单和子菜单第3节上下文菜单第4节使用XML定义菜单第5节 ActionBar的作用本章目标了解各版本菜单的特征。掌握创建选项菜单的方法。掌握菜单事件的处理方法。掌握动态改变菜单的方法。掌握创建上下文

视频课:https://edu.csdn.net/course/play/7621

本章内容

第1节菜单概述

第2节选项菜单和子菜单

第3节上下文菜单

第4节使用XML定义菜单

第5节  Actionbar的作用

本章目标

了解各版本菜单的特征。

掌握创建选项菜单的方法。

掌握菜单事件的处理方法。

掌握动态改变菜单的方法。

掌握创建上下文菜单的方法。

熟悉扩展上下文菜单的方法。

了解Actionbar的作用。

AndroID系统中的菜单

u菜单通常有两种情况:选项菜单和上下文菜单

Ø与Activity相关的叫选项菜单,在显示Activity时按MENU键d出

Ø与具体视图相关的菜单叫上下文菜单,长按视图将d出

选项菜单是个当前Activity关联的菜单

u对于AndroID2.3.x及以前的版本

Ø通过设备的“菜单”按钮d出

Ø出现在屏幕底部

u对于AndroID3.x及以后的版本

Ø出现在Actionbar的右端

Ø点击Actionbar的右端或设备上的“菜单”按钮d出

Ø菜单项可以出现在Actionbar上

Ø

Ø

u可以在Activity的子类和Fragment的子类中定义选项菜单

Ø如果两者都定义了,那么在显示的时候将会合并两者的菜单

Ø合并显示时先显示Activity的菜单

添加菜单或子菜单的步骤如下:

Ø重写Activiiy的OnCreateOptionsMenu(Menu menu)的方法,在该方法里调用Menu对象的方法来添加菜单项或子菜单。

Ø如果希望应用程序能响应菜单项的单击事件,重写Activity的onoptionsItemSelected (MenuItem mi)方法即可。

public boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);this.menu = menu;return true;}

u通过按钮事件或者其他事件实现添加菜单的任务

ØMenu类中提供了add方法可以用途添加菜单

ØMenu类中提供了removeItem方法用于删除菜单

menu.add(groupID, itemID, order, TitleRes);
添加普通菜单项并绑定事件
public boolean onCreateOptionsMenu(Menu menu) {		//添加普通菜单项		menu.add(0, Menu.FirsT, 1, "添加");		menu.add(0,Menu.FirsT+1,2,"编辑");		menu.add(0,Menu.FirsT+2,3,"保存");		return true;	}public boolean onoptionsItemSelected(MenuItem item) {		//判断单击的是哪个菜单项,并作出响应		switch(item.getItemID()){		case Menu.FirsT:			break;		//……		}		return super.onoptionsItemSelected(item);	}

添加子菜单 

public boolean onCreateOptionsMenu(Menu menu)	{	SubMenu colorMenu = menu.addSubMenu("字体颜色");		colorMenu.setIcon(R.drawable.color);		// 设置菜单头的图标		colorMenu.setheaderIcon(R.drawable.color);		// 设置菜单头的标题		colorMenu.setheaderTitle("选择文字颜色");		colorMenu.add(0, Font_RED, 0, "红色");		colorMenu.add(0, Font_GREEN, 0, "绿色");		colorMenu.add(0, Font_BLUE, 0, "蓝色");		return super.onCreateOptionsMenu(menu);	}


初始化选项菜单项事件

u当用于选择一个菜单项时,onoptionsItemSelected()方法会执行

Ø参数为MenuItem的对象

Ø通过调用MenuItem的getItemID()方法可以获得菜单项的ID

Ø以选中的菜单项ID为标准判断和处理事件


创建上下文菜单



创建上下文菜单的步骤如下

u重写Activity 的onCreateContextMenu menu, VIEw source, ContextMenu Context.MenuInfo menulnfo)方法。

u调用Activity的registerForContextMenu(VIEw vIEw)方法为vIEw组件注册上下文菜单。

u如果希望应用程序能为菜单项提供响应,可以重写OnContextItemSelected(MenuItem item)方法,或为指定菜单项绑定事件监听器。

添加上下文菜单并绑定事件

public voID onCreateContextMenu(ContextMenu menu, VIEw source,		ContextMenu.ContextMenuInfo menuInfo)	{		menu.add(0, MENU1, 0, "红色");	}	public boolean onContextItemSelected(MenuItem mi)	{		switch (mi.getItemID())		{			……			}		return true;	}

为vIEw组件注册上下文菜单

txt = (TextVIEw) findVIEwByID(R.ID.txt);

// 为文本框注册上下文菜单

registerForContextMenu(txt); 

XML布局菜单

选项菜单的布局定义

u选项菜单的资源定义在/res/menu下

u使用<menu>标签定义菜单

u使用<item>标签定义菜单项,常用属性如下

ØandroID:ID 定义菜单项的ID

ØandroID:icon 定义菜单项的图标

ØandroID:Title 定义菜单项的标题文字

ØandroID:showAsAction 定义菜单项何时显示为一个ActionItem

l取值:ifRoom | never | withText | always | collapseActionVIEw

u

u

选项菜单的布局定义示例

<menu xmlns:androID="http://schemas.androID.com/apk/res/androID" ><itemandroID:ID="@+ID/action_settings"androID:orderIncategory="100"androID:showAsAction="never"androID:icon="@drawable/home"androID:title="@string/action_settings"/><itemandroID:ID="@+ID/action_add"androID:orderIncategory="101"androID:showAsAction="never"androID:icon="@drawable/add"androID:title="@string/action_add"/></menu>



在Activity中覆盖onCreateOptionsMenu,加载选项菜单

public boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);return true;}

控制菜单项的显示

u在布局菜单的时候可以通过属性确定菜单项是否显示

Ø很多情况下,我们需要在特殊情况下才显示菜单项

Ø初始时往往选择将菜单项隐藏

l只需要给item添加androID:visible属性, l取值为false

选项菜单支持子菜单

u子菜单的定义只要在布局中的item标签内嵌入menu就可以实现

<item  androID:ID="@+ID/action_right"androID:orderIncategory="103“  androID:showAsAction="never"androID:icon="@drawable/right“  androID:title="@string/action_right"><menu ><item androID:ID="@+ID/action_mail” androID:orderIncategory="100"androID:showAsAction="never“ androID:icon="@drawable/mail"androID:title="@string/action_mail” />        </menu>    </item>


创建上下文菜单

<menu xmlns:androID="http://schemas.androID.com/apk/res/androID" ><itemandroID:ID="@+ID/action_copy"androID:orderIncategory="100"androID:showAsAction="never"androID:icon="@drawable/copy"androID:title="@string/action_copy"/><itemandroID:ID="@+ID/action_past"androID:orderIncategory="101"androID:showAsAction="never"androID:icon="@drawable/past"androID:title="@string/action_past"/></menu>

单选框菜单

构建单选框菜单

u在菜单布局中有一个标签叫<group>,其常用属性如下:

ØandroID:checkableBehavior 用于定义group中菜单项的可选特征

lsingle 表示菜单项为单选

lall 表示所有菜单项都是可勾选的(复选框)

lnone 表示所有菜单项都不可勾选

u使用group标签实现单选框菜单

Ø为menu标签添加子标签group

Ø设置group的属性androID:checkableBehavior=“single”

Ø在group标签中添加item标签定义单选菜单项

l在一些低的版本中,单选菜单项不能设置icon

 

构建单选框菜单

u单选框布局示例

<menu><group androID:checkableBehavior="single" ><item  …… androID:title="@string/action_add"/><item  …… androID:title="@string/action_sub"/></group></menu>

复选框菜单

构建复选框菜单

u使用group标签实现复选框菜单

Ø为menu标签添加子标签group

Ø设置group的属性androID:checkableBehavior=“all”

Ø在group标签中添加item标签定义单选菜单项

l在一些低的版本中,单选菜单项不能设置icon

u也可以直接为单个菜单项设置复选框

Ø设置item的属性androID:checkable=“true”

Ø


构建复选框菜单

u复选框布局示例

<menu><group androID:checkableBehavior=“all" ><item  …… androID:title="@string/action_add"/><item  …… androID:title="@string/action_sub"/></group></menu>


 

Actionbar概述

Actionbar诞生于AndroID3.0版本

u主要用于代替原来的标题栏

u可以在标题栏上展现更多的内容和功能

Ø显示选项菜单

Ø提供标签页切换方式的导航

Ø

Ø

Ø提供下拉的导航条目

Ø提供交互式活动视图代替选项条目

Ø

Ø

Ø

Ø

Ø使用程序的图标作为返回Home主屏或向上的导航 *** 作

 

Actionbar可以带给用户明确的动作提示和全局导航

u在需要在界面上明确提示用户动作的情况下

u在需要进行全局导航的情况下

u统一显示界面重要功能

Ø比如: 搜索、新建、分享等功能出现在显著位置便于使用


在系统应用中,很多都采用了Actionbar

u比如编写新短信功能


总结

以上是内存溢出为你收集整理的跟我学Android之八 ActionBar与菜单全部内容,希望文章能够帮你解决跟我学Android之八 ActionBar与菜单所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1052488.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存