Android里面也可用XML定义菜单资源,菜单分两种,一种是OptionMenu(点系统"Menu"键出来),一种是ContextMenu
下面定义两种菜单XML到res\menu文件夹下
my_menu为OptionMenu
- <?xmlversion="1.0"encoding="utf-8"?>
-
<menuxmlns:android="http://schemas.android.com/apk/res/android">
-
<itemandroid:title="@string/font_size"
-
android:icon="@drawable/font">
-
<menu>
-
-
<groupandroid:checkableBehavior="single">
-
-
<itemandroid:id="@+id/font_10"
-
android:title="@string/font_10"/>
-
<itemandroid:id="@+id/font_12"
-
android:title="@string/font_12"/>
-
<itemandroid:id="@+id/font_14"
-
android:title="@string/font_14"/>
-
<itemandroid:id="@+id/font_16"
-
android:title="@string/font_16"/>
-
<itemandroid:id="@+id/font_18"
-
android:title="@string/font_18"/>
-
</group>
-
</menu>
-
</item>
-
<item>
-
</item>
-
-
<itemandroid:id="@+id/plain_item"
-
android:title="@string/plain_item">
-
</item>
-
<itemandroid:id="@string/font_color"
-
android:title="@drawable/color">
-
<menu>
-
-
<group>
-
-
<itemandroid:id="@+id/red_font"
-
android:title="@string/red_title"/>
-
<itemandroid:id="@+id/green_font"
-
android:title="@string/green_title"/>
-
<itemandroid:id="@+id/blue_font"
-
android:title="@string/blue_title"/>
-
</group>
-
</menu>
-
</item>
-
</menu>
<?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/font">
<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>
</item>
<!-- 定义一个普通菜单项 -->
<item android:id="@+id/plain_item"
android:title="@string/plain_item">
</item>
<item android:id="@string/font_color"
android:title="@drawable/color">
<menu>
<!-- 定义一组普通的菜单项 -->
<group>
<!-- 定义3个菜单项 -->
<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为ContextMenu
- <?xmlversion="1.0"encoding="utf-8"?>
-
<menuxmlns:android="http://schemas.android.com/apk/res/android">
-
-
<groupandroid:checkableBehavior="single">
-
-
<itemandroid:id="@+id/red"
-
android:title="@string/red_title"
-
android:alphabeticShortcut="r"></item>
-
<itemandroid:id="@+id/green"
-
android:title="@string/green_title"
-
android:alphabeticShortcut="g"></item>
-
<itemandroid:id="@+id/blue"
-
android:title="@string/blue_title"
-
android:alphabeticShortcut="b"></item>
-
</group>
-
</menu>
<?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_title"
android:alphabeticShortcut="r"></item>
<item android:id="@+id/green"
android:title="@string/green_title"
android:alphabeticShortcut="g"></item>
<item android:id="@+id/blue"
android:title="@string/blue_title"
android:alphabeticShortcut="b"></item>
</group>
</menu>
定义两个res\value下的xml,用来指定颜色,字体
colors.xml
- <?xmlversion="1.0"encoding="UTF-8"?>
-
<resources>
-
<colorname="red">#ff0000</color>
-
<colorname="green">#00ff00</color>
-
<colorname="blue">#0000ff</color>
-
</resources>
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<color name="red">#ff0000</color>
<color name="green">#00ff00</color>
<color name="blue">#0000ff</color>
</resources>
strings.xml
- <?xmlversion="1.0"encoding="utf-8"?>
-
<resources>
-
<stringname="hello">HelloWorld,ContextMenuTest!</string>
-
<stringname="app_name">上下文菜单</string>
-
<stringname="red_title">红色</string>
-
<stringname="blue_title">蓝色</string>
-
<stringname="green_title">绿色</string>
-
<stringname="font_size">字体大小</string>
-
<stringname="font_color">字体颜色</string>
-
<stringname="plain_item">普通菜单项</string>
-
<stringname="font_10">10号字体</string>
-
<stringname="font_12">12号字体</string>
-
<stringname="font_14">14号字体</string>
-
<stringname="font_16">16号字体</string>
-
<stringname="font_18">18号字体</string>
-
</resources>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, ContextMenuTest!</string>
<string name="app_name">上下文菜单</string>
<string name="red_title">红色</string>
<string name="blue_title">蓝色</string>
<string name="green_title">绿色</string>
<string name="font_size">字体大小</string>
<string name="font_color">字体颜色</string>
<string name="plain_item">普通菜单项</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>
</resources>
下面代码将实现两种菜单
package WangLi.Resource.MenuResTest;
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.widget.TextView;
import android.widget.Toast;
public class MenuResTest extends Activity {
/** Called when the activity is first created. */
private TextView txt;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
txt = (TextView)findViewById(R.id.txt);
//为文本框注册上下文菜单
registerForContextMenu(txt);
}
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater inflator = new MenuInflater(this);
//装填R.menu.my_menu对应的菜单,并添加到menu中
inflator.inflate(R.menu.my_menu, menu);
return super.onCreateOptionsMenu(menu);
}
//每次创建上下文菜单时都会触发该方法
public void onCreateContextMenu(ContextMenu menu,View source,
ContextMenu.ContextMenuInfo menuInfo)
{
MenuInflater inflator = new MenuInflater(this);
//装填R.menu.context对应的菜单,并添加到menu中
inflator.inflate(R.menu.context, menu);
menu.setHeaderIcon(R.drawable.tools);
menu.setHeaderTitle("请选择背景色");
}
//上下文菜单中菜单项被单击时触发该方法
public boolean onContextItemSelected(MenuItem mi)
{
switch(mi.getItemId())
{
case R.id.red:
mi.setChecked(true);
txt.setBackgroundColor(Color.RED);
break;
case R.id.green:
mi.setChecked(true);
txt.setBackgroundColor(Color.GREEN);
break;
case R.id.blue:
mi.setChecked(true);
txt.setBackgroundColor(Color.BLUE);
break;
}
return true;
}
//菜单项被单击后的回调方法
public boolean onOptionsItemSelected(MenuItem mi)
{
//判断单击的是哪个菜单项,并针对性地做出响应
switch(mi.getItemId())
{
case R.id.font_10:
txt.setTextSize(10*2);
break;
case R.id.font_12:
txt.setTextSize(12*2);
break;
case R.id.font_14:
txt.setTextSize(14*2);
break;
case R.id.font_16:
txt.setTextSize(16*2);
break;
case R.id.font_18:
txt.setTextSize(18*2);
break;
case R.id.red_font:
txt.setTextColor(Color.RED);
mi.setChecked(true);
break;
case R.id.green_font:
txt.setTextColor(Color.GREEN);
mi.setChecked(true);
break;
case R.id.blue_font:
txt.setTextColor(Color.BLUE);
mi.setChecked(true);
break;
case R.id.plain_item:
Toast toast = Toast.makeText(MenuResTest.this, "您单击了普通项菜单", Toast.LENGTH_SHORT);
toast.show();
break;
}
return true;
}
}
下面是程序运行效果图,刚启动时是一个TextView
点击后,在手机屏幕下方出现OptionMenu
点击字体大小或普通菜单项,出现子菜单
选择就可改变TextView的字体
如下点击"普通菜单项",会出现一个Toast提示,过几秒就会消失
那么怎么弹出ContextMenu呢,就是对着TextView长按就可以了
选择后,背景色就改变了
分享到:
相关推荐
Android中使用xml文件定义菜单资源.pdf 学习资料 复习资料 教学资源
主要介绍了Android使用xml文件资源定义菜单实现方法,结合实例形式分析了Android资源文件管理及xml配置自定义菜单相关操作技巧,需要的朋友可以参考下
定义菜单资源文件属性2.选项菜单3. 上下文菜单(长按)4.带子菜单的选项菜单5. 题目记录 1.定义菜单资源文件 res/menu目录建立xml文件包含一下几个元素: :定义一个Menu,是一个菜单资源文件的根节点,里面可以...
安卓系统中关于利用XML资源来定义菜单中的内容部分的学习
7.5.1 XML菜单资源文件的结构 7.5.2 填充XML菜单资源文件 7.5.3 响应基于XML的菜单项 7.5.4 其他XML菜单标记简介 7.6 资源 7.7 小结 第8章 使用对话框 8.1 使用Android中的对话框 8.1.1 ...
6.7.1 定义菜单资源 239 6.7.2 使用菜单资源 240 6.8 样式(Style)和主题(Theme) 资源 243 6.8.1 样式资源 243 6.8.2 主题资源 245 6.9 属性(Attribute)资源 247 6.10 使用原始资源 249 6.11...
1.4 Android网上资源 第2章 搭建Android开发环境 2.1 Android开发环境要求 2.2 JDK的安装和配置 2.2.1 安装JDK 2.2.2 配置JDK 2.3 Android SDK的下载和安装 2.3.1 下载Android SDK 2.3.2 安装Android SDK 2.3.3 创建...
,关键在于调用setDropDownViewResource方法,以XML的方式定义下拉菜单要显示的模样 步骤: 1、定义Spinner控件 代码如下:<Spinner android:id=”@+id/spinner”android:layout_width u201dfill_parent”android:...
7.5.1 XML菜单资源文件的结构 7.5.2 填充XML菜单资源文件 7.5.3 响应基于XML的菜单项 7.5.4 其他XML菜单标记简介 7.6 资源 7.7 小结 第8章 使用对话框 8.1 使用Android中的对话框 8.1.1 ...
6.7.1 定义菜单资源 239 6.7.2 使用菜单资源 240 6.8 样式(Style)和主题(Theme) 资源 243 6.8.1 样式资源 243 6.8.2 主题资源 245 6.9 属性(Attribute)资源 247 6.10 使用原始资源 249 6.11 国际化和资源...
6.7.1 定义菜单资源 239 6.7.2 使用菜单资源 240 6.8 样式(Style)和主题(Theme) 资源 243 6.8.1 样式资源 243 6.8.2 主题资源 245 6.9 属性(Attribute)资源 247 6.10 使用原始资源 249 6.11 国际化和资源...
5.1.3 秘诀43:在xml 文件中定义菜单 104 5.1.4 秘诀44:使用搜索键 105 5.1.5 秘诀45:响应触摸事件 107 5.1.6 秘诀46:监听滑动手势 109 5.1.7 秘诀47:使用多点触控 110 5.2 高级用户界面库 113 5.2.1 秘诀48...
当你设计你的程序的时候,你可以用风格和主题来统一格式化各种屏幕和UI元素。 • 风格是一个包含一种或者多种格式化属性的...你可以用android提供的一些默认的风格和主题资源,你也可以自定义你自己的主题 和风格资源。
7.9 播放mp3资源文件——raw文件夹与MediaPlayer的使用 7.10 播放存储卡里的mp3音乐——MediaPlayer.setDataSource 7.11 自制录音/播放录音程序——MediaRecorder与AudioEncoder 7.12 通过收到短信开始秘密录音——...
7.9 播放mp3资源文件——raw文件夹与MediaPlayer的使用 7.10 播放存储卡里的mp3音乐——MediaPlayer.setDataSource 7.11 自制录音/播放录音程序——MediaRecorder与AudioEncoder 7.12 通过收到短信开始秘密录音——...
7.9 播放mp3资源文件——raw文件夹与MediaPlayer的使用 7.10 播放存储卡里的mp3音乐——MediaPlayer.setDataSource 7.11 自制录音/播放录音程序——MediaRecorder与AudioEncoder 7.12 通过收到短信开始秘密录音——...