选项菜单:menu_main.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:title="@string/font_size" android:icon="@drawable/daily10">
<menu>
<!-- 定义一组单选菜单项 -->
<group android:checkableBehavior="single">
<!-- 定义多个菜单项 -->
<item
android:id="@+id/font_10"
android:title="@string/font_10"
/>
<item
android:id="@+id/font_12"
android:title="@string/font_12"
/>
<item
android:id="@+id/font_14"
android:title="@string/font_14"
/>
<item
android:id="@+id/font_16"
android:title="@string/font_16"
/>
<item
android:id="@+id/font_18"
android:title="@string/font_18"
/>
</group>
</menu>
</item>
<!-- 定义一个普通菜单项 -->
<item
android:id="@+id/plaint_item"
android:title="@string/plain_item"
/>
<item
android:title="@string/font_color"
android:icon="@drawable/daily5">

<menu>
<!-- 定义一组普通菜单项 -->
<group>
<!-- 定义三个菜单项 -->
<item
android:id="@+id/red_font"
android:title="@string/red_title"
/>
<item
android:id="@+id/green_font"
android:title="@string/green_title"
/>
<item
android:id="@+id/blue_font"
android:title="@string/blue_title"
/>
</group>
</menu>
</item>
</menu>

上下文菜单:context.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 定义一组单选菜单项 -->
<group android:checkableBehavior="single">
<!-- 定义三个菜单项 -->
<item
android:id="@+id/red"
android:title="@string/red_back"
/>
<item
android:id="@+id/green"
android:title="@string/green_back"
/>
<item
android:id="@+id/blue"
android:title="@string/blue_back"
/>
</group>
</menu>

资源文件:strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

<string name="app_name">MyMenu</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
<string name="font_size">字体大小</string>
<string name="font_10">10号字体</string>
<string name="font_12">12号字体</string>
<string name="font_14">14号字体</string>
<string name="font_16">16号字体</string>
<string name="font_18">18号字体</string>
<string name="plain_item">普通菜单项</string>
<string name="font_color">选择字体颜色</string>
<string name="red_title">红色字体</string>
<string name="green_title">绿色字体</string>
<string name="blue_title">蓝色字体</string>
<string name="red_back">红色背景</string>
<string name="green_back">绿色背景</string>
<string name="blue_back">蓝色背景</string>
</resources>

MainActivity.java

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

tv=(TextView) findViewById(R.id.textView);
//为文本框注册上下文菜单
registerForContextMenu(tv);

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
/*
*
* */
MenuInflater inflator=new MenuInflater(this);
//装填对应的菜单,并添加到menu中
inflator.inflate(R.menu.menu_main, menu);
return super.onCreateOptionsMenu(menu);
}

//创建上下文菜单时触发该方法
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {

MenuInflater inflator=new MenuInflater(this);
//装填对应的菜单,并添加到menu中
inflator.inflate(R.menu.context, menu);
menu.setHeaderIcon(R.drawable.daily5);
menu.setHeaderTitle("选择背景颜色");
super.onCreateContextMenu(menu, v, menuInfo);
}

//上下文菜单中菜单项被单击时触发该方法
@Override
public boolean onContextItemSelected(MenuItem item) {
//勾选该菜单项
item.setCheckable(true);
switch(item.getItemId()){
case R.id.red:
item.setCheckable(true);
tv.setBackgroundColor(Color.RED);
break;
case R.id.green:
item.setCheckable(true);
tv.setBackgroundColor(Color.GREEN);
break;
case R.id.blue:
item.setCheckable(true);
tv.setBackgroundColor(Color.BLUE);
break;
}
return super.onContextItemSelected(item);
}

//菜单项被单击后回调方法
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
if(item.isCheckable()){
item.setCheckable(true);
}
switch(item.getItemId()){
case R.id.font_10:
tv.setTextSize(10*2);
break;
case R.id.font_12:
tv.setTextSize(12*2);
break;
case R.id.font_14:
tv.setTextSize(14*2);
break;
case R.id.font_16:
tv.setTextSize(16*2);
break;
case R.id.font_18:
tv.setTextSize(18*2);
break;
case R.id.red_font:
tv.setTextColor(Color.RED);
item.setCheckable(true);
break;
case R.id.green_font:
tv.setTextColor(Color.GREEN);
item.setCheckable(true);
break;
case R.id.blue_font:
tv.setTextColor(Color.BLUE);
item.setCheckable(true);
break;
case R.id.plaint_item:
Toast.makeText(this, "您单机了普通菜单项", Toast.LENGTH_SHORT).show();
break;

}
return true;
}
}

android- 菜单的更多相关文章

  1. Android菜单详解(四)——使用上下文菜单ContextMenu

    之前在<Android菜单详解(二)——创建并响应选项菜单>和<Android菜单详解(三)——SubMenu和IconMenu>中详细讲解了选项菜单,子菜单和图标菜单.今天接 ...

  2. Android菜单详解(一)——理解android中的Menu

    前言 今天看了pro android 3中menu这一章,对Android的整个menu体系有了进一步的了解,故整理下笔记与大家分享. PS:强烈推荐<Pro Android 3>,是我至 ...

  3. 【转】Android菜单详解——理解android中的Menu--不错

    原文网址:http://www.cnblogs.com/qingblog/archive/2012/06/08/2541709.html 前言 今天看了pro android 3中menu这一章,对A ...

  4. Android菜单(动画菜单、360波纹菜单)

     Android菜单(动画菜单.360波纹菜单) 前言:Android菜单常用集合:FragmentTabHost系统菜单.上移式菜单.360波纹菜单.展开式菜单.详解注释,可直接拿来用! 效果:   ...

  5. Android菜单

    Android菜单概述 菜单是Activity的一个重要组成部分,它为用户操作提供了快捷的途径.Android提供了一个简单的框架来向程序中添加标准菜单 . 一.创建一个菜单资源 你需要在一个XML ...

  6. Android菜单(menu)

    Android  菜单 我们继续来进行学习,今天写一下在软件中用的还算较多的菜单. 1.Menu 菜单,很显然,作用就是点击不同的选项触发不同的方法.现在在安卓使用中推荐使用ActionBar,但这里 ...

  7. Android菜单项内容大全

    一.介绍: 菜单是许多应用中常见的用户界面组件. Android3.0版本以前,Android设备会提供一个专用"菜单"按钮呈现常用的一些用户操作, Android3.0版本以后, ...

  8. Android菜单Menu的创建

    在res目录下的menu文件夹下创建一个main.xml文件,内容如下: <?xml version="1.0" encoding="utf-8"?> ...

  9. Android 菜单(OptionMenu)

    菜单是用户界面中最常见的元素之一,使用非常频繁,在Android中,菜单被分为如下三种,选项菜单(OptionsMenu).上下文菜单(ContextMenu)和子菜单(SubMenu). 一.概述 ...

  10. Android—菜单

    layout文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:an ...

随机推荐

  1. loj 1316(spfa预处理+状压dp)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=27024 题意:求0-(n-1)的经过最多的标记的点的最短路. 思路 ...

  2. indeterminateDrawable

    Android原生控件只有横向进度条一种,而且没法变换样式,比如原生rom的样子很丑是吧,当伟大的产品设计要求更换前背景,甚至纵向,甚至圆弧状的,咋办,比如ok,我们开始吧: 一)变换前背景 先来看看 ...

  3. Linux学习笔记(22) Linux启动管理

    1. 系统运行级别 运行级别 含义 关机 1 单用户模式,可想象为windows的安全模式,主要用于系统修复 2 不完全的命令行模式,不含NFS服务 完全的命令行模式,就是标准字符界面 4 系统保留 ...

  4. svg可缩放矢量图形

    可缩放矢量图形是基于可扩展标记语言(标准通用标记语言的子集),用于描述二维矢量图形的一种图形格式.它由万维网联盟制定,是一个开放标准. <svg xmlns="http://www.w ...

  5. Android中ViewPager+Fragment取消(禁止)预加载延迟加载(懒加载)问题解决方案

    转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53205878本文出自[DylanAndroid的博客] Android中Vie ...

  6. 【转】Hive配置文件中配置项的含义详解(收藏版)

    http://www.aboutyun.com/thread-7548-1-1.html 这里面列出了hive几乎所有的配置项,下面问题只是说出了几种配置项目的作用.更多内容,可以查看内容问题导读:1 ...

  7. WebApi多数据库切换

    用抽象工厂来解决多数据库之间的切换问题是普遍的,像以下几篇文章都讲的很具体 申明之前写的存在强大漏洞 -- 之前有涉及到IoC Autofac的知识点,鄙人孤陋寡闻,在亲身实践后才发现其中奥妙可参照一 ...

  8. 廖雪峰js教程笔记7 基本类型和包装类型

    在JavaScript的世界里,一切都是对象. 但是某些对象还是和其他对象不太一样.为了区分对象的类型,我们用typeof操作符获取对象的类型,它总是返回一个字符串: typeof 123; // ' ...

  9. POJ 1226 后缀数组

    题目链接:http://poj.org/problem?id=1226 题意:给定n个字符串[只含大小写字母],求一个字符串要求在n个串或者他们翻转后的串的出现过.输出满足要求的字符串的长度 思路:根 ...

  10. String equals()方法使用以及子串加密

    String equals()方法的实现方法: 名称 说明 String.Equals (Object) 确定此 String 实例是否与指定的对象(也必须是 String)具有相同的值. Strin ...