博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android上下文菜单ContextMenu
阅读量:4677 次
发布时间:2019-06-09

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

ContextMenu是一种悬浮于主界面上的菜单。当注册到一个View对象上时,默认情况下可以长按View对象约2秒钟呼出上下文菜单。

Context menus do not support item shortcuts and item icons:不支持快捷键和显示图标。

To show a context menu on long click, most clients will want to call  and override .

实现步骤:
1、定义一个View对象,并给它注册上下文菜单 :registerForContextMenu(View)
2、重写回调函数: onCreateContextMenu(...)
3、响应点击事件: onContextItemSelected(MenuItem item)
 
main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android=""

 

    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"

>

  <TextView
    android:id="@+id/myTextView"
    android:textSize="20sp"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="hello"
    />
   
</LinearLayout>

下面是 .java

 

package com.example.menucontext;

 

import android.app.Activity;

import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View;

 

import android.widget.TextView;

import android.util.Log;
public class ContextMenuActivity extends Activity {
   
    private static final int C_MENU_NEW = 0;
    private static final int C_MENU_OPEN =1;
 
    MenuItem contextmenu_item_new=null;
    MenuItem contextmenu_item_open=null;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);  
        TextView tv=new TextView(this);
        tv.setText("上下文菜单的载体");

        //将上文定义的TextView注册上下文菜单
        registerForContextMenu(tv);
        setContentView(tv);
      
    }
    
   
    
    //上下文菜单,本例会通过长按条目激活上下文菜单
    @Override
    public void onCreateContextMenu(ContextMenu menu, View view,
            ContextMenuInfo menuInfo) {
        menu.setHeaderTitle("welsh");
        //添加菜单项
       contextmenu_item_new=menu.add(0, C_MENU_NEW, 0, "新建");
        contextmenu_item_open=menu.add(0,C_MENU_OPEN, 0, "打开");
       
    }
    
    //菜单单击响应
    @Override
    public boolean onContextItemSelected(MenuItem item){
        //获取当前被选择的菜单项的信息 
        switch(item.getItemId()){
        case C_MENU_NEW:
            //在这里添加处理代码
            
            break;
        case C_MENU_OPEN:
            //在这里添加处理代码
            
            break;   
     
        }
        return true;
    }
   
}

 

 结果图:

转载于:https://www.cnblogs.com/welsh-android-learning/archive/2012/08/05/2623585.html

你可能感兴趣的文章
node上传包到npm公共库
查看>>
CI CLI执行方式
查看>>
robotframework API 源码阅读笔记----robot.utils.asserts
查看>>
201521123092《Java程序设计》第七周学习总结
查看>>
[翻译]JWA(JEDI Windows API Headers)库的readmefirst.txt文件翻译
查看>>
秒杀系统(二)
查看>>
day23---ajax跨域解决---JSONP
查看>>
redis封装 get查询/删除key/keys查询
查看>>
移动端自适应js
查看>>
Pro Android学习笔记(三二):Menu(3):Context菜单
查看>>
java中用StringBuffer写文件换行
查看>>
c#ASP.NET中页面传值共有这么几种方式
查看>>
ios 截屏
查看>>
vue2.0 路由学习笔记
查看>>
甲骨文发布JSR 356 针对WebSocket的Java API
查看>>
[转]JAVA回调机制(CallBack)详解
查看>>
vue组件库(五):icon管理
查看>>
Apache Hadoop 和Hadoop生态圈
查看>>
Ctrl+Enter 选中文本提交
查看>>
android WIFI
查看>>