Android学习之菜单的使用方法
作者:明昕1024
本文实例为大家分享了Android学习之菜单使用的具体代码,供大家参考,具体内容如下
Android中菜单包含上下文菜单和选项菜单两种类型。
使用统一的菜单类来管理菜单:
Menu、MenuItem、SubMenu三个类。
1.Menu类:
一个Menu对象代表一个菜单,是整个菜单的基础。
Menu类的常用方法:添加一个菜单:add(int groupId, int itemId, int order, CharSequence title)
2.MenuItem类:
MenuItem代表一个菜单项;
MenuItem往往是通过Menu的add方法来获取的。
3.subMenu类:
subMenu继承自Menu,其代表一个子菜单。
Menu、MenuItem、SubMenu的使用:
Menu通过add方法,来添加菜单项MenuItem并返回;
Menu通过addSubMenu方法,来添加自菜单SubMenu并返回;
通过MenuItem的多个方法,来设定菜单项的状态;
SubMenu继承自Menu,用相同方法,添加MenuItem及SubMenu;
通过SubMenu的多个方法,设定SubMenu的状态。
1.ContextMenu(上下文菜单):
ContextMenu(上下文菜单)类似于PC中的右键弹出菜单,当一个视图注册了上下文菜单时,长按该视图对象将出现一个提供相关功能的浮动菜单。上下文菜单可以被注册到任何视图对象中,最常见的是用于列表视图ListView中,但上下文菜单不支持图标和快捷键。
使用步骤如下:
(1)在Activity中使用上下文菜单,复写onCreateContextMenu() 和 onContextItemSelected()方法;
(2)为视图控件View中注册上下文菜单,使用registerForContextMenu()方法;
(3)在onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo info)中添加菜单项menu.add();
(4)在onContextItemSelected()中通过设置菜单的id来实现菜单子项的监听。
ContextMenu在Activity中的回调函数:
onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo info) //初始化,第一次调用菜单时执行,用于创建菜单项目 onContextItemSelected(MenuItem item) //菜单项被选中后调用,用于处理菜单事件,根据传递的item参数,确定具体的菜单项,进行设计 onContextMenuClosed(Menu menu) //菜单被关闭时调用 ``
2.OptionsMenu(选项菜单):
使用步骤如下:
(1)在Activity中复写onCreateOptionsMenu()和onOptionsItemSelected()方法;
(2)在onCreateOptionsMenu(Menu menu)中添加菜单选项,有两种方式:
a、调用menu.add()
b、从布局文件中添加,在res下新建menu文件夹,创建menu文件,填写相应的选项;
(2)为视图控件View中注册上下文菜单,使用registerForContextMenu()方法;
OptionsMenu选项菜单在Activity中的回调方法:
onCreateOptionsMenu(Menu menu) //初始化选项菜单,初次显示菜单时调用 public boolean onOptionsItemSeleted(MenuItem item) //选项菜单中的某个选项被选中时,调用该方法 public void onOptionMenuClosed(Menu menu) //当关闭菜单时调用该方法
☆☆☆Android Studio实现使用菜单的使用
1.打开Android Studio,新建工程后,在activity_main.xml中,编写代码。
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.androidlesson.MainActivity" android:background="@android:color/holo_blue_dark"> <TextView android:text="TextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignParentStart="true" android:id="@+id/textView" android:background="@android:color/holo_green_dark" android:textSize="36sp" /> <ImageView android:layout_width="match_parent" android:layout_height="wrap_content" app:srcCompat="@mipmap/ic_launcher" android:id="@+id/imageView" android:background="@android:color/holo_purple" android:layout_below="@+id/textView" android:layout_alignParentStart="true" android:layout_marginTop="14dp" /> </RelativeLayout>
2.在MainActivity.java中,编写相关代码。
package com.example.menu; import android.graphics.Color; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.ContextMenu; import android.view.Menu; import android.view.MenuItem; import android.view.SubMenu; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { TextView tv; ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv= (TextView) findViewById(R.id.textView); iv= (ImageView) findViewById(R.id.imageView); registerForContextMenu(tv); registerForContextMenu(iv); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { if (v.getId()==tv.getId()) { //menu.add(0,0,0,"打开"); menu.add(0, 0, 0, "大号字体"); //menu.add(0,1,1,"保存"); menu.add(0, 1, 1, "小号字体"); //SubMenu sm1=menu.addSubMenu(0,2,2,"编辑"); SubMenu sm1 = menu.addSubMenu(0, 2, 2, "颜色"); //sm1.add(0,3,3,"复制"); //sm1.add(0,4,4,"粘贴"); sm1.add(0, 3, 3, "黑色"); sm1.add(0, 4, 4, "红色"); }else { menu.add(1,5,5,"图片信息"); menu.add(1,6,6,"图片说明"); } super.onCreateContextMenu(menu, v, menuInfo); } @Override public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()){ case 0: tv.setTextSize(32); break; case 1: tv.setTextSize(16); break; case 3: tv.setTextColor(Color.BLACK); break; case 4: tv.setTextColor(Color.RED); break; case 5: Toast.makeText(this,"png格式图片,分辨率64",Toast.LENGTH_LONG).show(); break; case 6: Toast.makeText(this,"这是安卓机器人的图片",Toast.LENGTH_LONG).show(); } return super.onContextItemSelected(item); } @Override public boolean onCreateOptionsMenu(Menu menu) { SubMenu sub1=menu.addSubMenu(0,0,0,"文件"); SubMenu sub2=menu.addSubMenu(0,1,1,"编辑"); sub1.add(0,2,2,"打开"); sub1.add(0,3,3,"保存"); sub1.add(0,4,4,"另存为"); sub2.add(0,5,5,"复制"); sub2.add(0,6,6,"粘贴"); menu.add(0,7,7,"退出"); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()){ case 2: break; case 3: break; case 4: break; case 7: finish(); } return super.onOptionsItemSelected(item); } }
运行结果:
这就是菜单的简单使用。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。