`
mmdev
  • 浏览: 12927558 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

Android里面用XML定义菜单资源

 
阅读更多

Android里面也可用XML定义菜单资源,菜单分两种,一种是OptionMenu(点系统"Menu"键出来),一种是ContextMenu

下面定义两种菜单XML到res\menu文件夹下

my_menu为OptionMenu

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <menuxmlns:android="http://schemas.android.com/apk/res/android">
  3. <itemandroid:title="@string/font_size"
  4. android:icon="@drawable/font">
  5. <menu>
  6. <!--定义一组单选菜单项-->
  7. <groupandroid:checkableBehavior="single">
  8. <!--定义多个菜单项-->
  9. <itemandroid:id="@+id/font_10"
  10. android:title="@string/font_10"/>
  11. <itemandroid:id="@+id/font_12"
  12. android:title="@string/font_12"/>
  13. <itemandroid:id="@+id/font_14"
  14. android:title="@string/font_14"/>
  15. <itemandroid:id="@+id/font_16"
  16. android:title="@string/font_16"/>
  17. <itemandroid:id="@+id/font_18"
  18. android:title="@string/font_18"/>
  19. </group>
  20. </menu>
  21. </item>
  22. <item>
  23. </item>
  24. <!--定义一个普通菜单项-->
  25. <itemandroid:id="@+id/plain_item"
  26. android:title="@string/plain_item">
  27. </item>
  28. <itemandroid:id="@string/font_color"
  29. android:title="@drawable/color">
  30. <menu>
  31. <!--定义一组普通的菜单项-->
  32. <group>
  33. <!--定义3个菜单项-->
  34. <itemandroid:id="@+id/red_font"
  35. android:title="@string/red_title"/>
  36. <itemandroid:id="@+id/green_font"
  37. android:title="@string/green_title"/>
  38. <itemandroid:id="@+id/blue_font"
  39. android:title="@string/blue_title"/>
  40. </group>
  41. </menu>
  42. </item>
  43. </menu>
context.xml为ContextMenu

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <menuxmlns:android="http://schemas.android.com/apk/res/android">
  3. <!--定义一组单选菜单项目-->
  4. <groupandroid:checkableBehavior="single">
  5. <!--定义三个菜单项-->
  6. <itemandroid:id="@+id/red"
  7. android:title="@string/red_title"
  8. android:alphabeticShortcut="r"></item>
  9. <itemandroid:id="@+id/green"
  10. android:title="@string/green_title"
  11. android:alphabeticShortcut="g"></item>
  12. <itemandroid:id="@+id/blue"
  13. android:title="@string/blue_title"
  14. android:alphabeticShortcut="b"></item>
  15. </group>
  16. </menu>
定义两个res\value下的xml,用来指定颜色,字体

colors.xml

  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <resources>
  3. <colorname="red">#ff0000</color>
  4. <colorname="green">#00ff00</color>
  5. <colorname="blue">#0000ff</color>
  6. </resources>

strings.xml

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3. <stringname="hello">HelloWorld,ContextMenuTest!</string>
  4. <stringname="app_name">上下文菜单</string>
  5. <stringname="red_title">红色</string>
  6. <stringname="blue_title">蓝色</string>
  7. <stringname="green_title">绿色</string>
  8. <stringname="font_size">字体大小</string>
  9. <stringname="font_color">字体颜色</string>
  10. <stringname="plain_item">普通菜单项</string>
  11. <stringname="font_10">10号字体</string>
  12. <stringname="font_12">12号字体</string>
  13. <stringname="font_14">14号字体</string>
  14. <stringname="font_16">16号字体</string>
  15. <stringname="font_18">18号字体</string>
  16. </resources>

下面代码将实现两种菜单

  1. packageWangLi.Resource.MenuResTest;
  2. importandroid.app.Activity;
  3. importandroid.graphics.Color;
  4. importandroid.os.Bundle;
  5. importandroid.view.ContextMenu;
  6. importandroid.view.Menu;
  7. importandroid.view.MenuInflater;
  8. importandroid.view.MenuItem;
  9. importandroid.view.View;
  10. importandroid.widget.TextView;
  11. importandroid.widget.Toast;
  12. publicclassMenuResTestextendsActivity{
  13. /**Calledwhentheactivityisfirstcreated.*/
  14. privateTextViewtxt;
  15. @Override
  16. publicvoidonCreate(BundlesavedInstanceState){
  17. super.onCreate(savedInstanceState);
  18. setContentView(R.layout.main);
  19. txt=(TextView)findViewById(R.id.txt);
  20. //为文本框注册上下文菜单
  21. registerForContextMenu(txt);
  22. }
  23. publicbooleanonCreateOptionsMenu(Menumenu)
  24. {
  25. MenuInflaterinflator=newMenuInflater(this);
  26. //装填R.menu.my_menu对应的菜单,并添加到menu中
  27. inflator.inflate(R.menu.my_menu,menu);
  28. returnsuper.onCreateOptionsMenu(menu);
  29. }
  30. //每次创建上下文菜单时都会触发该方法
  31. publicvoidonCreateContextMenu(ContextMenumenu,Viewsource,
  32. ContextMenu.ContextMenuInfomenuInfo)
  33. {
  34. MenuInflaterinflator=newMenuInflater(this);
  35. //装填R.menu.context对应的菜单,并添加到menu中
  36. inflator.inflate(R.menu.context,menu);
  37. menu.setHeaderIcon(R.drawable.tools);
  38. menu.setHeaderTitle("请选择背景色");
  39. }
  40. //上下文菜单中菜单项被单击时触发该方法
  41. publicbooleanonContextItemSelected(MenuItemmi)
  42. {
  43. switch(mi.getItemId())
  44. {
  45. caseR.id.red:
  46. mi.setChecked(true);
  47. txt.setBackgroundColor(Color.RED);
  48. break;
  49. caseR.id.green:
  50. mi.setChecked(true);
  51. txt.setBackgroundColor(Color.GREEN);
  52. break;
  53. caseR.id.blue:
  54. mi.setChecked(true);
  55. txt.setBackgroundColor(Color.BLUE);
  56. break;
  57. }
  58. returntrue;
  59. }
  60. //菜单项被单击后的回调方法
  61. publicbooleanonOptionsItemSelected(MenuItemmi)
  62. {
  63. //判断单击的是哪个菜单项,并针对性地做出响应
  64. switch(mi.getItemId())
  65. {
  66. caseR.id.font_10:
  67. txt.setTextSize(10*2);
  68. break;
  69. caseR.id.font_12:
  70. txt.setTextSize(12*2);
  71. break;
  72. caseR.id.font_14:
  73. txt.setTextSize(14*2);
  74. break;
  75. caseR.id.font_16:
  76. txt.setTextSize(16*2);
  77. break;
  78. caseR.id.font_18:
  79. txt.setTextSize(18*2);
  80. break;
  81. caseR.id.red_font:
  82. txt.setTextColor(Color.RED);
  83. mi.setChecked(true);
  84. break;
  85. caseR.id.green_font:
  86. txt.setTextColor(Color.GREEN);
  87. mi.setChecked(true);
  88. break;
  89. caseR.id.blue_font:
  90. txt.setTextColor(Color.BLUE);
  91. mi.setChecked(true);
  92. break;
  93. caseR.id.plain_item:
  94. Toasttoast=Toast.makeText(MenuResTest.this,"您单击了普通项菜单",Toast.LENGTH_SHORT);
  95. toast.show();
  96. break;
  97. }
  98. returntrue;
  99. }
  100. }

下面是程序运行效果图,刚启动时是一个TextView



点击后,在手机屏幕下方出现OptionMenu

点击字体大小或普通菜单项,出现子菜单

选择就可改变TextView的字体

如下点击"普通菜单项",会出现一个Toast提示,过几秒就会消失

那么怎么弹出ContextMenu呢,就是对着TextView长按就可以了

选择后,背景色就改变了

分享到:
评论

相关推荐

    Android中使用xml文件定义菜单资源.pdf

    Android中使用xml文件定义菜单资源.pdf 学习资料 复习资料 教学资源

    Android使用xml文件资源定义菜单实现方法示例

    主要介绍了Android使用xml文件资源定义菜单实现方法,结合实例形式分析了Android资源文件管理及xml配置自定义菜单相关操作技巧,需要的朋友可以参考下

    【android编程】 第六讲-Android菜单布局及使用

    定义菜单资源文件属性2.选项菜单3. 上下文菜单(长按)4.带子菜单的选项菜单5. 题目记录 1.定义菜单资源文件 res/menu目录建立xml文件包含一下几个元素: :定义一个Menu,是一个菜单资源文件的根节点,里面可以...

    ANDROID-XML.rar_android_牟佳丽

    安卓系统中关于利用XML资源来定义菜单中的内容部分的学习

    精通ANDROID 3(中文版)1/2

    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 ...

    疯狂Android讲义源码

     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...

    Android入门到精通源代码.

    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 创建...

    Android Spinner 下拉菜单的使用

    ,关键在于调用setDropDownViewResource方法,以XML的方式定义下拉菜单要显示的模样 步骤: 1、定义Spinner控件 代码如下:&lt;Spinner android:id=”@+id/spinner”android:layout_width u201dfill_parent”android:...

    精通Android 3 (中文版)2/2

    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 ...

    疯狂Android讲义.part2

    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 国际化和资源...

    疯狂Android讲义.part1

    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 国际化和资源...

    android开发秘籍

    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...

    android开发--图像处理

    当你设计你的程序的时候,你可以用风格和主题来统一格式化各种屏幕和UI元素。 • 风格是一个包含一种或者多种格式化属性的...你可以用android提供的一些默认的风格和主题资源,你也可以自定义你自己的主题 和风格资源。

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    7.9 播放mp3资源文件——raw文件夹与MediaPlayer的使用 7.10 播放存储卡里的mp3音乐——MediaPlayer.setDataSource 7.11 自制录音/播放录音程序——MediaRecorder与AudioEncoder 7.12 通过收到短信开始秘密录音——...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    7.9 播放mp3资源文件——raw文件夹与MediaPlayer的使用 7.10 播放存储卡里的mp3音乐——MediaPlayer.setDataSource 7.11 自制录音/播放录音程序——MediaRecorder与AudioEncoder 7.12 通过收到短信开始秘密录音——...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    7.9 播放mp3资源文件——raw文件夹与MediaPlayer的使用 7.10 播放存储卡里的mp3音乐——MediaPlayer.setDataSource 7.11 自制录音/播放录音程序——MediaRecorder与AudioEncoder 7.12 通过收到短信开始秘密录音——...

Global site tag (gtag.js) - Google Analytics