博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第2天Menu菜单
阅读量:3787 次
发布时间:2019-05-22

本文共 4395 字,大约阅读时间需要 14 分钟。

第2天Menu菜单

常用的菜单

菜单 显示菜单 事件监听
系统菜单 onCreateOptionsMenu onOptionsItemSelected
上下文菜单 AlertDialog.Builder() setSingleChoiceItems()

1.系统菜单OptionsMenu

在这里插入图片描述

步骤流程:

1.在res下面创建一个menu文件夹,并新建一个xml文件作为OptionMenu的布局文件

2.Activity重写onCreateOptionsMenu加载资源文件

3.Activity重写onOptionsItemSelected加设置事件监听

//步骤2:Activity重写onCreateOptionsMenu加载资源文件    @Override    public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.options_menu,menu); return super.onCreateOptionsMenu(menu); } //步骤3:Activity重写onOptionsItemSelected设置事件监听 @Override public boolean onOptionsItemSelected(MenuItem item) {
int id=item.getItemId(); switch (id){
case R.id.blue: textView.setTextColor(Color.parseColor("#2239A2")); break; case R.id.green: textView.setTextColor(Color.parseColor("#1BA233")); break; case R.id.red: textView.setTextColor(Color.parseColor("#A21C31")); break; } return super.onOptionsItemSelected(item); }

注意:一个Activity只有一个系统菜单

2.上下文菜单ContextMenu

在这里插入图片描述

步骤流程:

1.在res下面创建一个menu文件夹,并新建一个xml文件作为ContextMenu的布局文件,我们复用上面的menu布局

2.Activity重写onCreateConextMenu加载资源文件
3.Activity重写onConextItemSelected设置事件监听
4.为控件添加长按属性并将菜单绑定到这个控件上:registerForContextMenu(控件)

public class MainActivity extends AppCompatActivity {
private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.text); //TODO 为控件添加长按属性并将菜单绑定到这个控件上 registerForContextMenu(textView); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
getMenuInflater().inflate(R.menu.options_menu, menu); super.onCreateContextMenu(menu, v, menuInfo); } @Override public boolean onContextItemSelected(MenuItem item) {
int id = item.getItemId(); switch (id) {
case R.id.blue: textView.setTextColor(Color.parseColor("#2239A2")); break; case R.id.green: textView.setTextColor(Color.parseColor("#1BA233")); break; case R.id.red: textView.setTextColor(Color.parseColor("#A21C31")); break; } return super.onContextItemSelected(item); }}

注意:长按绑定的控件+可以为任意一个view设置上下文菜单

3.弹出菜单

在这里插入图片描述

1.实现流程:

步骤1:在res下面创建一个menu文件夹,并新建一个xml文件作为PoupMenu的布局文件。

步骤2:把PopupMenu相关逻辑封装到showPopupMenu()方法中,包含PopupMenu的实例化、布局设置、显示、添加MenuItem的点击监听及响应等
步骤3:为控件设置事件监听直接调用showPopupMenu()方法

2.代码

(1)xml布局文件:activity_main2.xml

(2)Java代码:Main2Activity.java

public class Main2Activity extends AppCompatActivity {
private TextView view; @Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); view = (TextView) findViewById(R.id.popup_tv); view.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
showPopupMenu(); } }); } //TODO 弹出菜单 public void showPopupMenu(){
//TODO 1:创建对象 //参数一 上下文 参数二 菜单显示在指定控件的下方 PopupMenu popupMenu= new PopupMenu(this,view); //TODO 2:记载布局 popupMenu.inflate(R.menu.options_menu); //TODO 3:事件监听 popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override public boolean onMenuItemClick(MenuItem item) {
int id=item.getItemId(); switch (id){
case R.id.blue: view.setTextColor(Color.parseColor("#2239A2")); break; case R.id.green: view.setTextColor(Color.parseColor("#1BA233")); break; case R.id.red: view.setTextColor(Color.parseColor("#A21C31")); break; } return false; } }); //TODO 4:显示 popupMenu.show(); }}

注意:弹出菜单,默认弹出的位置在控件view的下方

转载地址:http://zwktn.baihongyu.com/

你可能感兴趣的文章
安装Elastic和kibana
查看>>
什么是搜索
查看>>
全文检索工具elasticsearch
查看>>
Vue之条件渲染实战
查看>>
Vue之侦听属性
查看>>
求职指南(1)
查看>>
MySQL day11
查看>>
MySQL day12
查看>>
JSONP原理
查看>>
Vue.js学习笔记—插值的操作(1)
查看>>
CSS的四种方式实现水平居中
查看>>
RISC-V生态架构浅析(认识RISC-V)
查看>>
? 精美图文带你掌握 JVM 内存布局
查看>>
谈谈go.sum
查看>>
tls 1.2 example
查看>>
GitHub 计划登陆中国,将产生哪些影响与意义?
查看>>
2019 我是怎样熬过来的?
查看>>
【C++学习计划】深入浅出——变量作用域(Day3)
查看>>
策略模式
查看>>
Spring Boot 实战 入门
查看>>