Android studio实现菜单效果
程序员文章站
2022-06-23 11:06:32
本文实例为大家分享了android studio实现菜单效果的具体代码,供大家参考,具体内容如下一、oncreateoptionsmenu()首先在res目录下新建一个menu文件夹,右击res目录→...
本文实例为大家分享了android studio实现菜单效果的具体代码,供大家参考,具体内容如下
一、oncreateoptionsmenu()
首先在res目录下新建一个menu文件夹,右击res目录→new→ directory,输入文件夹名字menu(随意),点击ok,接着在menu文件夹下面新建一个main的菜单文件。点击menu文件夹new→menu resource file。
activity.xml文件代码不需要改动。
mainactivity.java 文件代码:
package com.example.myapplication; import android.support.v7.app.appcompatactivity; import android.os.bundle; import android.view.menu; import android.view.menuitem; import android.widget.toast; public class mainactivity extends appcompatactivity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); } //用oncreateoptionsmenu()显示菜单 @override public boolean oncreateoptionsmenu(menu menu) { getmenuinflater().inflate(r.menu.menu,menu);//getmenuinflater()方法得到menuinflater //调用inflate接收两个参数 //r.menu.main指调用menu文件下的main资源文件 return true;//返回true,允许创建的菜单显示,返回false不显示 } //定义菜单响应事件 @override public boolean onoptionsitemselected(menuitem item) { switch (item.getitemid()){ //item.getitemid()判断我们选择那个菜单项 case r.id.first: toast.maketext(this, "first", toast.length_short).show(); break; case r.id.second: toast.maketext(this, "second", toast.length_short).show(); break; default: } return true; } }
关键代码:菜单 main.xml文件代码:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/add_item" android:title="add"> </item> <item android:id="@+id/add_remove" android:title="remove"> </item> </menu>
右上角三个点就是菜单,点击打开如图:
一的进阶(带子菜单的菜单)
menu.xml:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/f1" android:title="更换背景"> </item> <item android:id="@+id/f2" android:title="参数设置"> <menu> <group android:id="@+id/group1" android:checkablebehavior="all"> <item android:id="@+id/s1" android:title="参数1"> </item> <item android:id="@+id/s2" android:title="参数2"> </item> </group> </menu> </item> <item android:id="@+id/f3" android:title="恢复出厂"> </item> </menu>
.java:
package com.example.myapplication; import android.support.v7.app.appcompatactivity; import android.os.bundle; import android.view.menu; import android.view.menuinflater; import android.view.menuitem; import android.widget.toast; public class mainactivity extends appcompatactivity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); } //用oncreateoptionsmenu()显示菜单 @override public boolean oncreateoptionsmenu(menu menu) { menuinflater inflater=new menuinflater(this);//实例化一个menuinflater对象 inflater.inflate(r.menu.menu,menu);//解析菜单文件 return true; } //定义菜单响应事件 @override public boolean onoptionsitemselected(menuitem item) { if(item.getitemid()==r.id.f1) toast.maketext(this, "更换背景", toast.length_short).show(); else if(item.getitemid()==r.id.f3) toast.maketext(this, "恢复出厂", toast.length_short).show(); else { if(item.getgroupid()==r.id.group1){ //判断是否选中了第一层第二项 //与menu.xml文件对应 android:checkablebehavior="all" if(item.ischecked()) //菜单被选中 item.setchecked(false);//设置菜单项不被选中 else item.setchecked(true);//设置菜单项被选中 } } return true; } }
效果:
二、oncreatecontextmenu()(上下文菜单)
main.xml:
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <textview android:id="@+id/text1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="打开菜单:"/> </linearlayout>
menu.xml:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/red" android:title="红色"> </item> <item android:id="@+id/green" android:title="绿色"> </item> <item android:id="@+id/blue" android:title="蓝色"> </item> </menu>
.java:
package com.example.myapplication; import android.graphics.color; import android.support.v7.app.appcompatactivity; import android.os.bundle; import android.view.contextmenu; import android.view.menuinflater; import android.view.menuitem; import android.view.view; import android.widget.textview; public class mainactivity extends appcompatactivity { private textview tv; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); tv=(textview)findviewbyid(r.id.text1); registerforcontextmenu(tv);//为文本注册上下文菜单 } //用oncreatecontextmenu()显示菜单 @override public void oncreatecontextmenu(contextmenu menu, view v, contextmenu.contextmenuinfo menuinfo) { menuinflater inflater=new menuinflater(this);//实例化menuinflater一个对象 inflater.inflate(r.menu.menu,menu);//解析菜单文件 menu.setheadertitle("选择颜色:");//为菜单头设置标题 } @override public boolean oncontextitemselected(menuitem item) { switch (item.getitemid()){ case r.id.red: tv.settextcolor(color.rgb(255,0,0)); break; case r.id.green: tv.settextcolor(color.rgb(0,255,0)); break; default: tv.settextcolor(color.rgb(0,0,255)); } return true; } }
长按打开菜单四个字
随便选择颜色打开菜单四个字就会变为相应的颜色
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: Win7如何给C盘扩容 Win7系统电脑C盘扩容的办法
下一篇: PHP使用Nginx实现反向代理
推荐阅读
-
Android ListView用EditText实现搜索功能效果
-
Android实现音乐播放器歌词显示效果
-
android即时通讯demo开源(android studio实现聊天功能)
-
android使用PopupWindow实现页面点击顶部弹出下拉菜单
-
android实现图片反转效果
-
学习使用Material Design控件(四)Android实现标题栏自动缩放、放大效果
-
android中用xml文件实现带边框背景效果的方法
-
Android编程实现抽屉效果的方法示例
-
学习使用Material Design控件(二)使用DrawerLayout实现侧滑菜单栏效果
-
Android 使用CoordinatorLayout实现滚动标题栏效果的实例