2024年10月androidmenu(android menu 怎么得到item)
⑴androidmenu(androidmenu怎么得到item
⑵androidmenu怎么得到item
⑶android中的menu一般是指上下文菜单或者是选项菜单
⑷其中上选项菜单是可以在布局中res下的menu中在xml布局中写好布局来的然后通过java代码中的onCreateOptionsMenu来加载选项菜单,android.高级版本后是自动把菜单加载到标题栏上的,而不是低版本的按下menu键才显是出来的,上下文菜单是是通过onCreateContextMenu这个方法来注册上下文菜单的
⑸下面讲讲如何获取menu中的item
⑹获取上下文菜单的item其实就是当单机选项菜单时会触发这个方法
⑺public?boolean?onContextItemSelected(MenuItem?mi){ //判断单击的是哪个菜单项,并针对性的作出响应。 switch?(mi.getItemId()){ case?FONT_RED: title.setTextColor(Color.RED); break; case?FONT_GREEN: title.setTextColor(Color.GREEN); break; case?FONT_BLUE: title.setTextColor(Color.BLUE); break; case?MENU: createdialog(); break; } return?true; }
⑻获取选项菜单的item其实就是当单击选项菜单时会触发这个方法
⑼public?boolean?onMenuItemSelected(int?featureId,?MenuItem?item)?{ //?利用switch根据ItemId区分点击的是哪个菜单?以便正确响应用户操作 MenuItem??temp=?item; switch?(item.getItemId())?{ case?R.id.rename: createdialog(); break; case?R.id.red: title.setTextColor(Color.RED); break; case?R.id.green: title.setTextColor(Color.GREEN); break; case?R.id.blue: title.setTextColor(Color.BLUE); break;// case?R.id. createpopupmenu(temp);// break; } return?super.onMenuItemSelected(featureId,?item); }
⑽android如何在系统导航栏旁显示menu按键
⑾要想让menu按键显示在系统导航栏旁,需要改变AndroidManifest内的内的最小sdk版本。最高为,不得高于,否则无法现实在系统导航栏旁。个人想法是:Android.后加入了ActionBar控件和虚拟的按键,而ActionBar整合了menu功能导致android.以上的menu按钮只能现实在ActionBar上,无法显示在系统导航栏旁。
⑿Android中Menu是一个接口,我没有在API中找到实现这个接口的类,请问menu是在什么时候实例化的
⒀OverridepublicbooleanonCreateOptionsMenu(Menumenu){getMenuInflater().inflate(R.menu.main,menu);returntrue;}OverridepublicbooleanonOptionsItemSelected(MenuItemitem){//TODOAuto-generatedmethodstubswitch(item.getItemId()){caseR.id.你自己的操作break;}returntrue;}
⒁android中menu可能需要重写的方法是哪些
⒂可能需要重写的如下:publicbooleanonCreateOptionsMenu(Menumenu)方法只被系统调用一次,如需要动态更改菜单内容还需重写onPrepareOptionsMenu(Menumenu)方法实现[java]viewplaincopyMenum=null;intcount=;OverridepublicbooleanonPrepareOptionsMenu(Menumenu){if(count》){if(count%==){menu.removeGroup();}else{menu.add(,Menu.FIRST,,“st“);menu.add(,Menu.FIRST+,,“st“);}}count++;returnsuper.onPrepareOptionsMenu(menu);},contextmenu(长按屏幕产生)[java]viewplaincopyOverridepublicbooleanonContextItemSelected(MenuItemitem){switch(item.getItemId()){case:Toast.makeText(this,“youselect“+item.getItemId(),).show();break;case:Toast.makeText(this,“youselect“+item.getItemId(),).show();break;}returnsuper.onContextItemSelected(item);}OverridepublicvoidonCreateContextMenu(ContextMenumenu,Viewv,ContextMenuInfomenuInfo){menu.add(,Menu.FIRST,,“st“);menu.add(,Menu.FIRST+,,“st“);super.onCreateContextMenu(menu,v,menuInfo);}
⒃怎么让android系统中隐藏的menu按钮显示出来
⒄菜单是用户界面中最常见的元素之一,使用非常频繁,在Android中,菜单被分为如下三种,选项菜单(OptionsMenu、上下文菜单(ContextMenu和子菜单(SubMenu,以下说的是创建OptionsMenu
⒅publicbooleanonCreateOptionsMenu(Menumenu):使用此方法调用OptionsMenu。
⒆publicbooleanonOptionsItemSelected(MenuItemitem):选中菜单项后发生的动作。
⒇publicvoidonOptionsMenuClosed(Menumenu):菜单关闭后发生的动作。
⒈publicbooleanonPrepareOptionsMenu(Menumenu):选项菜单显示之前onPrepareOptionsMenu方法会被调用,你可以用此方法来根据打当时的情况调整菜单。
⒉publicbooleanonMenuOpened(intfeatureId,Menumenu):单打开后发生的动作。
⒊默认样式是在屏幕底部弹出一个菜单,这个菜单我们就叫他选项菜单OptionsMenu,一般情况下,选项菜单最多显示排每排个菜单项,这些菜单项有文字有图标,也被称作IconMenus,如果多于项,从第六项开始会被隐藏,在第六项会出现一个More里,点击More才出现第六项以及以后的菜单项,这些菜单项也被称作ExpandedMenus。下面介绍。
⒋/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/TextView“/》
⒑《/LinearLayout》
⒒。重载onCreateOptionsMenu(Menumenu)方法
⒓重载onCreateOptionsMenu(Menumenu)方法,并在此方法中添加菜单项,最后返回true,如果false,菜单则不会显示。
⒔publicbooleanonCreateOptionsMenu(Menumenu)
⒕publicbooleanonCreateOptionsMenu(Menumenu){
⒖*add()方法的四个参数,依次是:
⒗*、组别,如果不分组的话就写Menu.NONE,
⒘*、Id,这个很重要,Android根据这个Id来确定不同的菜单
⒙*、顺序,那个菜单现在在前面由这个参数的大小决定
⒚*、文本,菜单的显示文本
⒛menu.add(Menu.NONE,Menu.FIRST+,,“删除“).setIcon(
android.R.drawable.ic_menu_delete);
//setIcon()方法为菜单设置图标,这里使用的是系统自带的图标,同学们留意一下,以
//android.R开头的资源是系统提供的,我们自己提供的资源是以R开头的
menu.add(Menu.NONE,Menu.FIRST+,,“保存“).setIcon(
android.R.drawable.ic_menu_edit);
menu.add(Menu.NONE,Menu.FIRST+,,“帮助“).setIcon(
android.R.drawable.ic_menu_help);
menu.add(Menu.NONE,Menu.FIRST+,,“添加“).setIcon(
android.R.drawable.ic_menu_add);
menu.add(Menu.NONE,Menu.FIRST+,,“详细“).setIcon(
android.R.drawable.ic_menu_info_details);
menu.add(Menu.NONE,Menu.FIRST+,,“发送“).setIcon(
android.R.drawable.ic_menu_send);
returntrue;
使用onOptionsItemSelected(MenuItemitem)方法为菜单项注册事件
publicbooleanonOptionsItemSelected(MenuItemitem)
publicbooleanonOptionsItemSelected(MenuItemitem){
switch(item.getItemId()){
caseMenu.FIRST+:
Toast.makeText(this,“删除菜单被点击了“,Toast.LENGTH_LONG).show();
caseMenu.FIRST+:
Toast.makeText(this,“保存菜单被点击了“,Toast.LENGTH_LONG).show();
caseMenu.FIRST+:
Toast.makeText(this,“帮助菜单被点击了“,Toast.LENGTH_LONG).show();
caseMenu.FIRST+:
Toast.makeText(this,“添加菜单被点击了“,Toast.LENGTH_LONG).show();
caseMenu.FIRST+:
Toast.makeText(this,“详细菜单被点击了“,Toast.LENGTH_LONG).show();
caseMenu.FIRST+:
Toast.makeText(this,“发送菜单被点击了“,Toast.LENGTH_LONG).show();
returnfalse;
package.android.menu;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.view.Menu;
importandroid.view.MenuItem;
importandroid.widget.Toast;
publilassDefaultMenuextendsActivity{
/**Calledwhentheactivityisfirstcreated.*/
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
publicbooleanonCreateOptionsMenu(Menumenu){
*add()方法的四个参数,依次是:
*、组别,如果不分组的话就写Menu.NONE,
*、Id,这个很重要,Android根据这个Id来确定不同的菜单
*、顺序,那个菜单现在在前面由这个参数的大小决定
*、文本,菜单的显示文本
menu.add(Menu.NONE,Menu.FIRST+,,“删除“).setIcon(
android.R.drawable.ic_menu_delete);
//setIcon()方法为菜单设置图标,这里使用的是系统自带的图标,同学们留意一下,以
//android.R开头的资源是系统提供的,我们自己提供的资源是以R开头的
menu.add(Menu.NONE,Menu.FIRST+,,“保存“).setIcon(
android.R.drawable.ic_menu_edit);
menu.add(Menu.NONE,Menu.FIRST+,,“帮助“).setIcon(
android.R.drawable.ic_menu_help);
menu.add(Menu.NONE,Menu.FIRST+,,“添加“).setIcon(
android.R.drawable.ic_menu_add);
menu.add(Menu.NONE,Menu.FIRST+,,“详细“).setIcon(
android.R.drawable.ic_menu_info_details);
menu.add(Menu.NONE,Menu.FIRST+,,“发送“).setIcon(
android.R.drawable.ic_menu_send);
returntrue;
publicbooleanonOptionsItemSelected(MenuItemitem){
switch(item.getItemId()){
caseMenu.FIRST+:
Toast.makeText(this,“删除菜单被点击了“,Toast.LENGTH_LONG).show();
caseMenu.FIRST+:
Toast.makeText(this,“保存菜单被点击了“,Toast.LENGTH_LONG).show();
caseMenu.FIRST+:
Toast.makeText(this,“帮助菜单被点击了“,Toast.LENGTH_LONG).show();
caseMenu.FIRST+:
Toast.makeText(this,“添加菜单被点击了“,Toast.LENGTH_LONG).show();
caseMenu.FIRST+:
Toast.makeText(this,“详细菜单被点击了“,Toast.LENGTH_LONG).show();
caseMenu.FIRST+:
Toast.makeText(this,“发送菜单被点击了“,Toast.LENGTH_LONG).show();
returnfalse;
publicvoidonOptionsMenuClosed(Menumenu){
Toast.makeText(this,“选项菜单关闭了“,Toast.LENGTH_LONG).show();
publicbooleanonPrepareOptionsMenu(Menumenu){
Toast.makeText(this,
“选项菜单显示之前onPrepareOptionsMenu方法会被调用,你可以用此方法来根据打当时的情况调整菜单“,
Toast.LENGTH_LONG).show();
//如果返回false,此方法就把用户点击menu的动作给消费了,onCreateOptionsMenu方法将不会被调用
returntrue;
android中menu怎么写
菜单资源文件必须放在res/menu目录中。菜单资源文件必须使用《menu》标签作为根节点。除了《menu》标签外,还有另外两个标签用于设置菜单项和分组,这两个标签是《item》和《group》。《menu》标签没有任何属性,但可以嵌套在《item》标签中,表示子菜单的形式。不过《item》标签中不能再嵌入《item》标签。.《item》标签的属性含义如下:Id:表示菜单项的资源IDmenuCategory:同种菜单项的种类。该属性可取个值:container、system、secondary和alternative。通过menuCategroy属性可以控制菜单项的位置。例如将属性设为system,表示该菜单项是系统菜单,应放在其他种类菜单项的后面。orderInCategor:同种类菜单的排列顺序。该属性需要设置一个整数值。例如menuCategory属性值都为system的个菜单项(item、item和item)。将这个菜单项的orderInCategory属性值设为、、,那么item会显示在最前面,而item会显示在最后面。title:菜单项标题(菜单项显示的文本)titleCondensed:菜单项的短标题。当菜单项标题太长时会显示该属性值icon:菜单项图标资源IDalphabeticShortcut:菜单项的字母快捷键numericShortcut:菜单项的数字快捷键checkable:表示菜单项是否带复选框。该属性可设计为true或falsechecked:如果菜单项带复选框(checkable属性为true),该属性表示复选框默认状态是否被选中。可设置的值为true或falsevisible:菜单项默认状态是否可视enable:菜单项默认状态是否被激活
androidmenu怎样设置item的文字
AndroidMenu的文字有两种设置方式:
add()方法的四个参数,依次是:
组别,如果不分组的话就写Menu.NONE。
Id,这个很重要,Android根据这个Id来确定不同的菜单。
顺序,哪个菜单项在前面由这个参数的大小决定。
文本,菜单项的显示文本。
Android如何自定义Menu
新建自定义Menu————》TabMenu.java如下:
package.ncw;
importandroid.content.Context;
importandroid.graphics.Color;
importandroid.graphics.drawable.ColorDrawable;
importandroid.view.Gravity;
importandroid.view.View;
importandroid.view.ViewGroup;
importandroid.widget.BaseAdapter;
importandroid.widget.GridView;
importandroid.widget.ImageView;
importandroid.widget.LinearLayout;
importandroid.widget.PopupWindow;
importandroid.widget.AdapterView.OnItemClickListener;
importandroid.widget.LinearLayout.LayoutParams;
publilassTabMenuextendsPopupWindow{
privateGridViewgridView;
privateLinearLayoutmLayout;
publicTabMenu(Contextcontext,OnItemClickListenerbodyClick,intcolorBgTabMenu){
super(context);
mLayout=newLinearLayout(context);
mLayout.setOrientation(LinearLayout.VERTICAL);
gridView=newGridView(context);
gridView.setLayoutParams(newLayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
gridView.setSelector(newColorDrawable(Color.TRANSPARENT));//选中的时候为透明色
gridView.setNumColumns();
gridView.setStretchMode(GridView.STRETCH_COLUMN_WIDTH);
gridView.setVerticalSpacing();
gridView.setHorizontalSpacing();
gridView.setPadding(,,,);
gridView.setGravity(Gravity.CENTER);
gridView.setOnItemClickListener(bodyClick);
mLayout.addView(gridView);
this.setContentView(mLayout);
this.setWidth(LayoutParams.FILL_PARENT);
this.setHeight(LayoutParams.WRAP_CONTENT);
this.setBackgroundDrawable(newColorDrawable(colorBgTabMenu));//设置TabMenu菜单背景
this.setFocusable(true);//menu菜单获得焦点如果没有获得焦点menu菜单中的控件事件无法响应
publicvoidSetBodySelect(intindex,intcolorSelBody){
intcount=gridView.getChildCount();
for(inti=;i《count;i++){
if(i!=index)
((LinearLayout)gridView.getChildAt(i))
.setBackgroundColor(Color.TRANSPARENT);
((LinearLayout)gridView.getChildAt(index))
.setBackgroundColor(colorSelBody);
publicvoidSetBodyAdapter(MenuBodyAdapterbodyAdapter){
gridView.setAdapter(bodyAdapter);
*自定义Adapter,TabMenu的每个分页的主体
staticpublilassMenuBodyAdapterextendsBaseAdapter{
privateContextmContext;
privateintresID;
*设置TabMenu的分页主体
*paramcontext
*???????????调用方的上下文
*paramresID
publicMenuBodyAdapter(Contextcontext,intresID){
this.mContext=context;
this.resID=resID;
publicintgetCount(){
returnresID.length;
publicObjectgetItem(intposition){
returnmakeMenyBody(position);
publiclonggetItemId(intposition){
returnposition;
privateLinearLayoutmakeMenyBody(intposition){
LinearLayoutresult=newLinearLayout(this.mContext);
result.setOrientation(LinearLayout.VERTICAL);
result.setGravity(Gravity.CENTER_HORIZONTAL
|Gravity.CENTER_VERTICAL);
result.setPadding(,,,);
ImageViewimg=newImageView(this.mContext);
img.setBackgroundResource(resID[position]);
result.addView(img,newLinearLayout.LayoutParams(newLayoutParams(
LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)));
returnresult;
publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
returnmakeMenyBody(position);
使用自定义Menu————》testTabMenu.java
package.ncw;
importandroid.app.Activity;
importandroid.graphics.Color;
importandroid.os.Bundle;
importandroid.util.Log;
importandroid.view.Gravity;
importandroid.view.Menu;
importandroid.view.View;
importandroid.widget.AdapterView;
importandroid.widget.AdapterView.OnItemClickListener;
publilasstestTabMenuextendsActivity{
TabMenu.MenuBodyAdapterbodyAdapter=newTabMenu.MenuBodyAdapter(this,
newint{R.drawable.menu_,R.drawable.menu_,
R.drawable.menu_,R.drawable.menu_});
TabMenutabMenu;
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tabMenu=newTabMenu(this,newBodyClickEvent(),R.drawable.menu_bg);//出现与消失的动画
tabMenu.update();
tabMenu.SetBodyAdapter(bodyAdapter);
classBodyClickEventimplementsOnItemClickListener{
publicvoidonItemClick(AdapterView《?》arg,Viewarg,intarg,
tabMenu.SetBodySelect(arg,Color.GRAY);
Log.i(“Log“,“BodyClickEventimplementsOnItemClickListener“
publicbooleanonCreateOptionsMenu(Menumenu){
menu.add(“menu“);//必须创建一项
returnsuper.onCreateOptionsMenu(menu);
publicbooleanonMenuOpened(intfeatureId,Menumenu){
if(tabMenu!=null){
if(tabMenu.isShowing())
tabMenu.dismiss();
tabMenu.showAtLocation(findViewById(R.id.LinearLayout),
Gravity.BOTTOM,,);
returnfalse;//返回为true则显示系统menu
《?xmlversion=“.“encoding=“utf-“?》
《LinearLayoutxmlns:android=“
android:id=“+id/LinearLayout“
android:layout_width=“fill_parent“
android:layout_height=“fill_parent“》
android:id=“+id/TextView“
android:layout_width=“fill_parent“
android:layout_height=“wrap_content“
android:text=“自定义Menu————张亚龙“》
《/TextView》
《/LinearLayout》