Android里面也可用XML定义菜单资源,菜单分两种,一种是OptionMenu(点系统"Menu"键出来),一种是ContextMenu
下面定义两种菜单XML到res\menu文件夹下
my_menu为OptionMenu
<?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
<?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
<?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
<?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,Intent概要(十一) .
2012-08-11 14:01 802下面内容我觉得归纳的很好,我看了几本书,包括一些英文的,写 ... -
初学Android,字符串,数字,尺寸,数组资源(十二) .
2012-08-11 00:09 1357下面是使用字符串,数字,尺寸,数组资源的例子,挺好,一个例子已 ... -
初学Android,使用Drawable资源之使用StateListDrawable资源(十三) .
2012-08-11 00:06 1158StateListDrawable用于组织多个Drawable ... -
初学Android,使用Drawable资源之使用LayerDrawable资源(十四)
2012-08-03 10:27 777LayerDrawable,系统将会按这些Drawable对象 ... -
初学Android,使用Drawable资源之使用ShapeDrawable资源(十五)
2012-08-03 14:40 1113ShapeDrawable比较简单,用来定义一个基本几何图形, ... -
初学Android,使用Drawable资源之使用ClipDrawable资源(十六)
2012-08-03 16:23 1065ClipDrawable代表从其它位图上截取一个"图 ... -
初学Android,使用Drawable资源之使用AnimationDrawable资源(十七)
2012-08-06 11:34 935这次学学怎么使用动画资源,AnimationDrawable, ... -
初学Android,使用自定义的XML资源(十八)
2012-08-06 15:16 685使用自定义的XML资源,这当然也必须是Android的一个功能 ... -
初学Android,使用样式(style)资源(二十)
2012-08-09 09:57 768在Android里面,样式的概念跟网页中CSS样式表的概念相似 ... -
初学Android,使用主题(Theme)资源(二十一)
2012-08-09 11:06 746主题跟样式类似,也是放在路径/res/values下同样以&l ... -
初学Android,使用属性(Attribute)资源(二十二)
2012-08-09 14:47 786感觉这篇写的不错,拿来转了 http://wujia ... -
初学Android,使用原始资源(二十三)
2012-08-09 17:09 796原始资源就是Android没有为之提供专门支持的资源文件,可以 ... -
ImageAdapter和PopupWindow的使用
2012-08-09 17:35 1154引用public class SamplePopup exte ... -
requestWindowFeature类
2012-08-09 17:21 744requestWindowFeature可以设 ... -
android学习笔记(二)
2012-08-08 12:00 713Activities and Tasks 一个活动能启动另一 ... -
Android之SurfaceView学习(一)
2012-08-07 16:57 635首先我们先来看下官方API对SurfaceView的介绍 S ... -
adnroid 学习笔记(一)
2012-08-06 16:10 621今天开始学习android,在配置资源文件时遇到的问题,在这里 ...
相关推荐
其中,`app:menu`属性引用了一个菜单资源文件(`bottom_navigation_menu.xml`),在这个文件中定义了各个底部菜单项。 接下来,我们需要在`bottom_navigation_menu.xml`中定义菜单项: ```xml <menu xmlns:android...
Android菜单通常在`res/menu`目录下的XML文件中定义。每个菜单项可以通过`<item>`标签创建,其中可以包含`android:title`(标题)、`android:icon`(图标)等属性。在这个实例中,我们可能会看到如何在XML中定义...
在本项目中,我们主要关注的是使用Android Studio进行实战演练,目标是仿造美团外卖的菜单功能。这个压缩包包含了实现这一目标所需的所有代码和图片资源。以下是对这些关键元素的详细解读: 1. **Android Studio**:...
首先,要使用Android菜单,我们需要在布局文件(如`activity_main.xml`)中不直接添加菜单元素,因为菜单通常在活动中动态生成。菜单的定义主要在`res/menu`目录下的XML文件中完成,例如`menu_main.xml`。在这个文件...
在创建顶部滑动菜单的过程中,你还需要自定义一个TabLayout,它可以是AppCompatActivity的扩展或者使用Android Support Library中的TabLayout组件。TabLayout可以和ViewPager结合,通过设置Tab的标签和图标,来实现...
《Android圆形旋转菜单——CircleMenu.zip深度解析》 在Android应用开发中,用户界面的设计是至关重要的,一个吸引人的、易用的界面可以极大地提升用户体验。"CircleMenu"是一款独特的UI组件,它以圆形的方式展示...
首先,要在Android项目中使用菜单,需要在资源目录(res)下创建一个名为menu的文件夹,并在该文件夹中添加XML布局文件来定义菜单项。例如,可以创建一个名为menu.xml的文件,并使用XML标签来定义菜单项。每个菜单项...
"android弹出菜单演示"这个项目是关于如何使用PopupWindow来创建一个类似QuickAction的菜单,这些菜单通常用于在主视图上快速执行操作。下面将详细讲解相关的知识点。 首先,PopupWindow是Android SDK提供的一种...
- 在布局文件中添加BottomNavigationView,并设置对应的菜单资源文件。 - 在Activity中监听BottomNavigationView的选中状态,通过onNavigationItemSelectedListener更新界面内容。 ```xml <!-- layout.xml --> ...
在Android应用开发中,侧滑菜单(DrawerLayout)是一种常见的设计模式,用于提供导航和功能选项。本实例代码着重讲解如何实现一个支持双向侧滑的自定义控件,即不仅可从左侧滑出,也能从右侧滑出。下面将详细阐述...
在【压缩包子文件的文件名称列表】中,我们只有一个条目“Android圆形旋转菜单”,这可能是一个包含所有必要文件的目录,如Java源代码文件(.java)、布局文件(.xml)、资源文件(如图片、音频、字符串资源等)、...
本资源“老罗android视频开发源码和ppt--android菜单的使用.rar”是由知名的Android开发者罗升阳(也被大家亲切地称为老罗)制作的,旨在帮助开发者深入理解和实际运用Android菜单功能。 首先,让我们来探讨一下...
在这个“Android menu单选菜单.zip”压缩包中,包含了一个简单的Android单选菜单(Radio Menu)的源码示例,非常适合初学者理解和实践。 单选菜单(Radio Menu)在Android中通常由`RadioGroup`和`RadioButton`组成...
在Android开发中,创建层级结构丰富的用户界面是常见的需求,...对于经验丰富的开发者,这则是一个优化和改进的机会,比如考虑使用现代的布局管理器,如`RecyclerView`的嵌套使用,以实现更灵活和高性能的菜单系统。
8. **兼容性**:确保透明菜单在不同版本的Android系统上都能正常工作,可能需要针对API级别进行适配,如使用`Support Library`或`AndroidX`来兼容低版本设备。 总的来说,“Android 透明菜单源码”项目将提供一个...
本示例“android菜单Demo”旨在帮助初学者理解并掌握如何在Android应用中创建和使用各种类型的菜单。 首先,我们要了解Android中的菜单类型主要有三种:选项菜单(Option Menu)、上下文菜单(Context Menu)和弹出...
对于初学者来说,通过分析这个项目的代码,不仅可以理解Context Menu的工作原理,还能了解到Android中的事件监听、菜单资源的使用等基本概念。 学习这个项目后,你还可以尝试扩展功能,例如添加动画效果,或者将...
在Android应用开发中,侧拉菜单(通常称为滑动抽屉或Navigation Drawer)是一个非常常见的设计模式,它允许用户从屏幕边缘滑出一个菜单来访问不同的功能或导航选项。这个侧拉菜单通常包含一个列表视图,显示了多个可...
在本教程中,我们将深入探讨如何创建和使用Android菜单,这将是一个非常适合初学者的实践项目。 首先,让我们了解菜单的基本结构。在Android中,菜单通常在`res/menu`目录下定义,以XML文件的形式存在。例如,你...