资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

androidmenu,androidmenu默认图标如何修改颜色

android menu 有什么用

android 中的menu一般是指上下文菜单或者是选项菜单 其中上选项菜单是可以在布局中res下的menu中在xml布局中写好布局来的然后通过java代码中的onCreateOptionsMenu来加载选项菜单,android4.4高级版本后是自动把菜单加载到标题栏上的,而不是低版本的按下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 MENU1: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.choose_color: // createpopupmenu(temp); // break;}return super.onMenuItemSelected(featureId, item);}

10年积累的网站建设、做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有十堰郧阳免费网站建设让你可以放心的选择与我们合作。

android中menu怎么写

菜单资源文件必须放在res/menu目录中。菜单资源文件必须使用menu标签作为根节点。除了menu标签外,还有另外两个标签用于设置菜单项和分组,这两个标签是item和group。

menu标签没有任何属性,但可以嵌套在item标签中,表示子菜单的形式。不过item标签中不能再嵌入item标签。

1.item标签的属性含义如下:

Id:表示菜单项的资源ID

menuCategory:同种菜单项的种类。该属性可取4个值:container、system、secondary和alternative。通过menuCategroy属性可以控制菜单项的位置。例如将属性设为system,表示该菜单项是系统菜单,应放在其他种类菜单项的后面。

orderInCategor:同种类菜单的排列顺序。该属性需要设置一个整数值。例如menuCategory属性值都为system的3个菜单项(item1、item2和item3)。将这3个菜单项的orderInCategory属性值设为3、2、1,那么item3会显示在最前面,而item1会显示在最后面。

title:菜单项标题(菜单项显示的文本)

titleCondensed:菜单项的短标题。当菜单项标题太长时会显示该属性值

icon:菜单项图标资源ID

alphabeticShortcut:菜单项的字母快捷键

numericShortcut:菜单项的数字快捷键

checkable:表示菜单项是否带复选框。该属性可设计为true或false

checked:如果菜单项带复选框(checkable属性为true),该属性表示复选框默认状态是否被选中。可设置的值为true或false

visible:菜单项默认状态是否可视

enable:菜单项默认状态是否被激活

android中menu可能需要重写的方法是哪些

可能需要重写的如下:

public boolean onCreateOptionsMenu(Menu menu)方法只被系统调用一次,如需要动态更改菜单内容还需重写onPrepareOptionsMenu(Menu menu)方法实现

[java] view plain copy

Menu m=null;

int count=0;

@Override

public boolean onPrepareOptionsMenu(Menu menu) {

if(count0){

if(count%2==0){

menu.removeGroup(1);

}else{

menu.add(1, Menu.FIRST, 0, "5st");

menu.add(1, Menu.FIRST+1, 0, "6st");

}

}

count++;

return super.onPrepareOptionsMenu(menu);

}

2,context menu(长按屏幕产生)

[java] view plain copy

@Override

public boolean onContextItemSelected(MenuItem item) {

switch (item.getItemId()) {

case 1:

Toast.makeText(this, "you select"+item.getItemId(), 500).show();

break;

case 2:

Toast.makeText(this, "you select"+item.getItemId(), 500).show();

break;

}

return super.onContextItemSelected(item);

}

@Override

public void onCreateContextMenu(ContextMenu menu, View v,

ContextMenuInfo menuInfo) {

menu.add(0, Menu.FIRST, 0, "1st");

menu.add(0, Menu.FIRST+1, 0, "2st");

super.onCreateContextMenu(menu, v, menuInfo);

}

Android如何自定义Menu

新建自定义Menu————TabMenu.java如下:

package com.ncw;

import android.content.Context;

import android.graphics.Color;

import android.graphics.drawable.ColorDrawable;

import android.view.Gravity;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.GridView;

import android.widget.ImageView;

import android.widget.LinearLayout;

import android.widget.PopupWindow;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.LinearLayout.LayoutParams;

public class TabMenu extends PopupWindow {

private GridView gridView;

private LinearLayout mLayout;

public TabMenu(Context context, OnItemClickListener bodyClick, int colorBgTabMenu) {

super(context);

mLayout = new LinearLayout(context);

mLayout.setOrientation(LinearLayout.VERTICAL);

gridView = new GridView(context);

gridView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,

LayoutParams.WRAP_CONTENT));

gridView.setSelector(new ColorDrawable(Color.TRANSPARENT));// 选中的时候为透明色

gridView.setNumColumns(4);

gridView.setStretchMode(GridView.STRETCH_COLUMN_WIDTH);

gridView.setVerticalSpacing(0);

gridView.setHorizontalSpacing(0);

gridView.setPadding(0, 0, 0, 0);

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(new ColorDrawable(colorBgTabMenu));// 设置TabMenu菜单背景

this.setFocusable(true);// menu菜单获得焦点 如果没有获得焦点menu菜单中的控件事件无法响应

}

public void SetBodySelect(int index, int colorSelBody) {

int count = gridView.getChildCount();

for (int i = 0; i count; i++) {

if (i != index)

((LinearLayout) gridView.getChildAt(i))

.setBackgroundColor(Color.TRANSPARENT);

}

((LinearLayout) gridView.getChildAt(index))

.setBackgroundColor(colorSelBody);

}

public void SetBodyAdapter(MenuBodyAdapter bodyAdapter) {

gridView.setAdapter(bodyAdapter);

}

/**

* 自定义Adapter,TabMenu的每个分页的主体

*

*/

static public class MenuBodyAdapter extends BaseAdapter {

private Context mContext;

private int[] resID;

/**

* 设置TabMenu的分页主体

*

* @param context

*            调用方的上下文

* @param resID

*/

public MenuBodyAdapter(Context context, int[] resID) {

this.mContext = context;

this.resID = resID;

}

@Override

public int getCount() {

return resID.length;

}

public Object getItem(int position) {

return makeMenyBody(position);

}

public long getItemId(int position) {

return position;

}

private LinearLayout makeMenyBody(int position) {

LinearLayout result = new LinearLayout(this.mContext);

result.setOrientation(LinearLayout.VERTICAL);

result.setGravity(Gravity.CENTER_HORIZONTAL

| Gravity.CENTER_VERTICAL);

result.setPadding(0, 0, 0, 0);

ImageView img = new ImageView(this.mContext);

img.setBackgroundResource(resID[position]);

result.addView(img, new LinearLayout.LayoutParams(new LayoutParams(

LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)));

return result;

}

public View getView(int position, View convertView, ViewGroup parent) {

return makeMenyBody(position);

}

}

}

?

1

使用自定义Menu————testTabMenu.java

package com.ncw;

import android.app.Activity;

import android.graphics.Color;

import android.os.Bundle;

import android.util.Log;

import android.view.Gravity;

import android.view.Menu;

import android.view.View;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemClickListener;

public class testTabMenu extends Activity {

TabMenu.MenuBodyAdapter bodyAdapter = new TabMenu.MenuBodyAdapter(this,

new int[] { R.drawable.menu_01, R.drawable.menu_02,

R.drawable.menu_03, R.drawable.menu_04 });

TabMenu tabMenu;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

tabMenu = new TabMenu(this, new BodyClickEvent(), R.drawable.menu_bg);// 出现与消失的动画

tabMenu.update();

tabMenu.SetBodyAdapter(bodyAdapter);

}

class BodyClickEvent implements OnItemClickListener {

@Override

public void onItemClick(AdapterView? arg0, View arg1, int arg2,

long arg3) {

tabMenu.SetBodySelect(arg2, Color.GRAY);

Log.i("Log", " BodyClickEvent implements OnItemClickListener "

+ arg2);

}

}

@Override

/**

* 创建MENU

*/

public boolean onCreateOptionsMenu(Menu menu) {

menu.add("menu");// 必须创建一项

return super.onCreateOptionsMenu(menu);

}

@Override

/**

* 拦截MENU

*/

public boolean onMenuOpened(int featureId, Menu menu) {

if (tabMenu != null) {

if (tabMenu.isShowing())

tabMenu.dismiss();

else {

tabMenu.showAtLocation(findViewById(R.id.LinearLayout01),

Gravity.BOTTOM, 0, 0);

}

}

return false;// 返回为true 则显示系统menu

}

}

?xml version="1.0" encoding="utf-8"?

LinearLayout xmlns:android=""

android:id="@+id/LinearLayout01"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

TextView

android:id="@+id/TextView01"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="自定义Menu————张亚龙"

/TextView

/LinearLayout

运行效果图:

android menu属性

这是监听手机上的主菜单文件的,点击手机菜单键,会弹出一个菜单,1代表第一行命令,点击就是推出程序,点击第二个就是弹出软件的介绍。

android如何在系统导航栏旁显示menu按键

要想让menu按键显示在系统导航栏旁,需要改变AndroidManifest内的

内的最小

sdk版本。最高为10,不得高于10,否则无法现实在系统导航栏旁。个人想法是:Android3.0后加入了ActionBar控件和虚拟的按键,而ActionBar整合了menu功能导致android3.0以上的menu按钮只能现实在ActionBar上,无法显示在系统导航栏旁。


当前文章:androidmenu,androidmenu默认图标如何修改颜色
本文URL:http://cdkjz.cn/article/dsdjphd.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220