API Guides ----UI------Menus

Menu是一个通用UI组件,提供类似用户使用助手

3.0(API 11)安卓不再提供一个专用的菜单按钮,安卓APP应用当中最多可以出现6个菜单,如果要提供更多选项,在下发会出现一个more,点击后出现其他选项。使用菜单键有3种方式

options menu 收集菜单选项提供给APP ,可以放置一些全局按钮,比如,搜索,设置, Compose; 在android 2.3 以下是存在真实按钮的;使用3.0或者更高版本会提供 actionbar构成整个屏幕, 是可悬浮选项,3.0 Menu button就已经过期了

android建议使用XML定义菜单,可以在activity 或 fragment 使用菜单填充 Menu

优点:形象化菜单结果,可以让内容和行为代码分离,可以提供可选择的菜单适应不同版本和尺寸

如果版本是android 2.3或者更低,系统会调用 onCreateOptionsMenu() 去创建一个option menu, 如果安卓版本是3.0 那么系统会调用 onCreateOption menu 创建并有序地显示 action bar

事件:

当用户去选择一个Item 选项的时候,系统会调用 onOptionsItemSelected () , 并通过getItemid(),得到一个所选的 Item的选项的标识符(id)

再根据id 操作

onOptionItemSelected( MenuItem item ){

switch(item.getItemId()){

case R.id.open:

方法();

break;}}

注意:这个菜单仅仅和当前的Activity 有关系,在其他是不会显示的

在android3.0 当中增加了一个能力:在XML中添加 android: onClick 属性,这个属性的值必须定义一个方法名称,方法的名称可以使用在菜单当中,此方法必须public , 且仅有一个参数 MenuItem , 当系统方法被调用的时候,这个方法就会被触发;

<item

android : id ="@+id /save"

android : title = "never"

android:showAsAction="never"

android: onClick="save"

/>

public void save Message(MenuItem itme ){ }


规则:

必须定义一个menu节点,

<menu>里面可以包含menu items 选项,这个<menu>必须作为根节点,在里面可以控制一个或多个<Item> 和 <group>

<item>里面提供一个单独的item在这个menu中,这个元素可能会包含一个嵌套的menu的节点元素,是为了创建一个菜单

item元素支持多个属性,可以定义在菜单的选项的行为中

android: id 是菜单的唯一标识符,允许应用识别菜单所选项

android: icon 为菜单添加图片(2.3可以加图片,高版本不添加图片)

android: titile 为菜单提供标题

android: showAsAction : 在什么时候显示在action bar上面(平板上,高版本当中)

showAsAction: 是一个类似键盘键,显示在导航菜单栏上(Action Bar),这个导航菜单栏会显示在一个activity 当中,包含一个ActionBar,API版本最低3.0 android 11(设置never菜单就不会跳到右上角)

相关属性:

ifRoom 如果上面有空间,我们就放置这个Item选项,

withText 可以包含一些文字,或者标题,多放其他属性用”|“

never 不要放置( 右上角 )

always 不管有没有位置都放置


<group>一个可选项,不可见 地包含一个<Item>元素,可以允许我们去把菜单进行分类

子菜单:

在任意Item当中我们都可以添加子菜单(除了子菜单),menu作为item的子元素

子菜单事件:

一,

一般处理一级菜单

onOptionsItemSelected( MenuItem item ){

SubMenu subMenu = item . getSubMenu();

MenuItem menuItem = subMenu . findItem(子菜单ID);

menuItem.setIntent(intent);}

SubMenu subMenu = item

一般处理二级菜单

二,

onMenuItemSelected ( int featureId , MenuItem item ){

switch(item.getItemId()){

case R.id.节点:

break;

}}

①Contextual Menus上下文菜单:(长按)

提供一个动作去影响一个特殊的选项,在任何一个view中都可以添加一个显示上下文帧布局菜单,但是经常使用于ListView 或GridView当中,加载模式有两种:浮动列表,长按事件才会出来;

创建一个上下文菜单

1,view上面注册上下文menu,使用registerForContextMenu() ,menu就会关联到View; 如果activity中使用ListView或GridView,当我们想要每一个Item都提供一个上下文菜单的时候,需要在ListView或GridView中去注册 registerForContextMenu();

2. 在Activity或者Fragment 当中实现onCreateContextMenu() 方法,注册后会接收一个长按事件,系统会调用onCreateContextMenu()

例如:

①listView中注册 registerForContextMenu(listView);

① 在menu 设置几个菜单选项

②实现方法

onCreateContextMenu(ContextMenu mennu,View v,ContextMenuInfo, info){

getMenuInflater().inflate(Menu的ID ,menu)}

onContextItemSelected(ItemMenu item){

AdapterContextMenuInfo info = (AdapterContextMenuInfo)item.getMenuInfo();//返回一个接口

switch(item.getItemId()){

case R.id.edit:

String value = adapter.getItem( info . position );

break;}}

3.MenuInflater 允许从一个资源文件中让我们填充一个上下的文菜单,回调方法的参数包含View,当用户长按后得到一个ContextMenu.ContextMenuInfo对象,此对象提供一个关于被选中的Item的额为的信息。

②Action mode 上下文菜单 android 3.0 API(11)

让系统 implement ActionMode , 让用户获得焦点,并和它进行交互的选项,让用户选择选项时,上下文菜单会显示在屏幕的顶端。当模式被使用时,用户可以选择多个选项,或者反向选择等,当用户按返回键时让模式消失,这个上下文菜单可以单独使用,也可以结合actionbar 使用。如果当前版本是3.0或更高版本,提倡使用

用户可以长按或者复选框,可绑定ListView和GreadView;

①implement ActionMode.Callback接口,在接口中可处理上下文菜单actionbar,并响应单击事件,

在onCreateAcionMode 加载上下文菜单

MenuInflater inflater = mode.getMenuInflater();

inflater.inflate(R.menu.main,menu);

onPrepareActionMode

在onActionItemClicked 中处理事件 switch(item.getItemId()){case R.id.case:mode.finish();break }

在onDestroyActionMode中销毁 mActionMode = null;

在listView添加onItemLongClickListener在内部 if (mActionModo!=null){

return false;

}; mActionMode =startActionMode( callback );

view.setSelected(true);

rerurn true;

③Popup Menu(弹出菜单):

弹出菜单可以固定在某个目的Viwe下面,如果view下面有空间的情况下。

API 11 或者更高

①在xml定一个菜单

②实例化菜单需要上下文对象和一个View去固定菜单在哪里

③使用MenuInflater填充菜单,如果API是14 可以使用PopuMenu.inflate() ;

例如:

<Button ...

android : onClick="showPopup"

/>

public void showPoput(View v){

PubuMenu PopupMenu = new PopuMenu(this, view);

pupuMenu.getMenuInflater().inflate( Menu.menu.main,popuMenu.getMenu());

popupMenu.show();

}

<mennu

<item :id @+id /"open" />

>



更多相关文章

  1. Android(安卓)Studio 使用SlidingMenu侧滑菜单
  2. Android提高十八篇之自定义Menu(TabMenu)
  3. 【Android(安卓)开发】:UI控件之 AlertDialog 对话框控件的的使用
  4. android开发之使用上下文菜单
  5. android用户界面-菜单
  6. Android(安卓)中自定义 Menu 资源
  7. Android(安卓)Context 上下文 你必须知道的一切
  8. android 选项卡TabHost
  9. Delphi XE5 for Android(安卓)(七)

随机推荐

  1. Android Property Animation动画
  2. Android(安卓)OTA 升级之四:进入根文件系
  3. android 如何实现EditText从不可编辑状态
  4. 【android】checkedTextView形成自定义Li
  5. Android 五大布局FrameLayout,LinearLayo
  6. 详解Android的服务
  7. 疯狂android讲义学习总结---TextView
  8. Android Studio的Gradle错误解决方法
  9. ADB 自制万用驱动方法,解决找不到驱动问题
  10. 基于Java LinkedList,实现Android大数据