Android中文API(97)—— ContextMenu

简介:

前言

  本章内容是android.view.ContextMenu,版本为Android 2.3 r1,翻译来自"Kun",再次感谢"Kun" !期待你一起参与Android 中文API的翻译,联系我over140@gmail.com。 

 

声明

  欢迎转载,但请保留文章原始出处:) 

    博客园:http://www.cnblogs.com/

    Android中文翻译组:http://goo.gl/6vJQl

 

正文

一、结构

public interface ContextMenu implements Menu

 

android.view.ContextMenu

 

  二、概述

      扩展自Menu的上下文菜单提供了修改上下文菜单头(header)的功能。(译者注:当一个视图注册了上下文菜单时,执行一个在该对象上长按(2秒)的动作,将出现一个具有相关功能的浮动菜单。)

      上下文菜单不支持菜单项的快捷方式和图标。

      当执行长按上下文菜单时,大多数情况会调用registerForContextMenu(View) 函数和重写执行onCreateContextMenu(ContextMenu, View, ContextMenu.ContextMenuInfo)函数。(译者注:因为要创建一个上下文菜单,你必须重写这个活动的上下文回调函数onCreateContextMenu() 并且 通过registerForContextMenu(View) 为其注册上下文菜单。)

 

  三、内部类

         interface  ContextMenu.ContextMenuInfo

  获得更多关于创建上下文菜单的信息。( 译者注:例如:AdapterViews 使用这个类可以精确选择adapter的位置来启动上下文菜单。)

 

  四、公共方法

    public abstract void clearHeader ()

  清除上下文菜单头的信息。(译者注:包括图片和文字信息

     

  Menu.clearHeader(); 

  

 

  public abstract ContextMenu setHeaderIcon (Drawable icon)

  为上下文菜单头设置图标

  参数

  icon          你要使用的Drawable

             返回值

  调用你设置修改的上下文菜单

 

  public abstract ContextMenu setHeaderIcon (int iconRes)

  设置上下文菜单头图标为指定的资源id

  参数

  iconRes  你要使用的图标资源的目录

(译者注:把图标放入res/drawable/ 目录下,R文件会自动生成对应项。设置方法如menu.setHeaderIcon(R.drawable.webtext)

  这个上下文菜单头是没有设置图标的

                 

  这个上下文菜单头是设置了图标的 

       

 

  返回值

  调用你设置修改过的上下文菜单

 

  public abstract ContextMenu setHeaderTitle (int titleRes)

  通过资源标识符为上下文菜单头的标题栏设置文字。(译者注:需要在res/string中先设置一段你需要的文字,如:<string name="titletest">这是一段测试文字</string>

然后通过R文件索引到这段文字,menu.setHeaderTitle(R.string.titletest)

参数    

titleRes  所需文字资源的索引

                   返回值

调用你设置修改过的上下文菜单

 

  public abstract ContextMenu setHeaderTitle (CharSequence title)

  设置上下文菜单的标题,显示在标题栏

  参数

  title          标题要显示的文字

                 返回值

  调用你设置修改过的上下文菜单

 

  public abstract ContextMenu setHeaderView (View view)

  设置View 到上下文菜单头上。将替代上下文菜单头的图标和标题(或者替代你之前设置的headerView

  参数

  view         上下文菜单头要使用的 View

                 返回值

  调用你设置修改过的上下文菜单内容

 

  五、补充

          文章精选:

                   Android 的上下文菜单: Context Menu

                   androidContextMenu

                   android 上下文菜单Context Menu

  代码示例:

      Test_Contextmenu.java

复制代码
public   class  Test_Contextmenu  extends  Activity {
    
/**  Called when the activity is first created.  */
    @Override
    
public   void  onCreate(Bundle savedInstanceState) {
        
super .onCreate(savedInstanceState);
        setContentView(R.layout.main);
        TextView txt1 
=  (TextView)  this .findViewById(R.id.txt1);
        
this .registerForContextMenu(txt1);
        TextView txt2 
=  (TextView)  this .findViewById(R.id.txt2);
        
this .registerForContextMenu(txt2);
    }  
    
//  重写 onCreateContextMenu 用以创建上下文菜单
     @Override
    
public   void  onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo){
        
super .onCreateContextMenu(menu, v, menuInfo);
        
//  创建 R.id.txt1  的上下文菜单
         if  (v  ==  (TextView)  this .findViewById(R.id.txt1)) {
            menu.setHeaderIcon(R.drawable.icon);
            menu.setHeaderTitle(R.string.titletest);
            
// menu.clearHeader();
            
//  第一个参数:组ID
            
//  第二个参数:菜单项ID
            
//  第三个参数:顺序号
            
//  第四个参数:菜单项上显示的内容
            menu.add( 1 , 0 , 0 , " 菜单1 " );
            menu.add(
1 , 1 , 1 , " 菜单2 " ).setCheckable( true );  //  增加一个√选项
            
        }
        
//  创建 R.id.txt2 的上下文菜单(多级)
         else   if (v  ==  (TextView)  this .findViewById(R.id.txt2)){
            
        
//  ContextMenu.addSubMenu("菜单名称") - 用来添加子菜单。子菜单其实就是一个特殊的菜单
            SubMenu sub1  =  menu.addSubMenu( " 父菜单1 " );
            sub1.setHeaderIcon(R.drawable.folder);
            sub1.add(
0 0 0 " 菜单1 " );
            sub1.add(
0 1 1 " 菜单2 " );
            sub1.setGroupCheckable(
1 true true );
            SubMenu sub2 
=  menu.addSubMenu( " 父菜单2 " );
            sub2.setIcon(R.drawable.text);
            sub2.add(
1 0 0 " 菜单3 " );
            sub2.add(
1 1 1 " 菜单4 " );
            sub2.setGroupCheckable(
1 true true );
        }
    }
}
复制代码

    main.xml

复制代码
<? xml version="1.0" encoding="utf-8" ?>
< LinearLayout  xmlns:android ="http://schemas.android.com/apk/res/android"
    android:orientation
="vertical"
    android:layout_width
="fill_parent"
    android:layout_height
="fill_parent"
    
>
< TextView 
    
android:id ="@+id/txt1"  
    android:layout_width
="fill_parent"  
    android:layout_height
="wrap_content"  
    android:text
="请 长 按 触 发(txt1)"
    
/>
    
< TextView 
    
android:id ="@+id/txt2"  
    android:layout_width
="fill_parent"  
    android:layout_height
="wrap_content"  
    android:text
="请 长 按 触 发(txt2)"
    
/>
    
</ LinearLayout >
复制代码

    strings.xml

<? xml version="1.0" encoding="utf-8" ?>
< resources >
    
< string  name ="hello" > Hello World, Test_Contextmenu! </ string >
    
< string  name ="app_name" > Test_Contextmenu </ string >
    
< string  name ="titletest" > 这是一段测试文字 </ string >
</ resources >


 转载:http://www.cnblogs.com/over140/archive/2011/01/25/1944324.html

目录
相关文章
|
7月前
|
Android开发
Android 11 修改libcore update-api 遇到的问题
Android 11 修改libcore update-api 遇到的问题
193 1
|
4月前
|
编译器 API Android开发
Android经典实战之Kotlin Multiplatform 中,如何处理不同平台的 API 调用
本文介绍Kotlin Multiplatform (KMP) 中使用 `expect` 和 `actual` 关键字处理多平台API调用的方法。通过共通代码集定义预期API,各平台提供具体实现,编译器确保正确匹配,支持依赖注入、枚举类处理等,实现跨平台代码重用与原生性能。附带示例展示如何定义跨平台函数与类。
133 0
|
6月前
|
API Android开发 开发者
`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView
【6月更文挑战第26天】`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView。它提供高效的数据视图复用,优化的布局管理,支持多种布局(如线性、网格),并解耦数据、适配器和视图。RecyclerView的灵活性、性能(如局部刷新和动画支持)和扩展性使其成为现代Android开发的首选,特别是在处理大规模数据集时。
75 2
|
6月前
|
Java Linux API
微信API:探究Android平台下Hook技术的比较与应用场景分析
微信API:探究Android平台下Hook技术的比较与应用场景分析
|
7月前
|
SQL API Android开发
Android API:Activity.managedQuery()
Android API:Activity.managedQuery()
53 2
|
7月前
|
API Android开发
Android Framework增加API 报错 Missing nullability on parameter
Android Framework增加API 报错 Missing nullability on parameter
347 1
|
7月前
|
API 定位技术 开发工具
Android Studio2021.1.1 高德地图api调用这一篇就够了
Android Studio2021.1.1 高德地图api调用这一篇就够了
|
7月前
|
API Android开发
对于应用研发平台EMAS中安卓 API 32 收不到 FCM 推送的问题
对于应用研发平台EMAS中安卓 API 32 收不到 FCM 推送的问题
109 3
|
前端开发 Android开发 算法
Android Canvas drawText实现中文垂直居中
目标: 把中文字符绘制到目标矩形的居中位置。 问题: Android的Canvas绘图,drawText里的origin是以baseline为基准的,直接以目标矩形的bottom传进drawText,字符位置会偏下。
1179 0
|
20天前
|
搜索推荐 前端开发 API
探索安卓开发中的自定义视图:打造个性化用户界面
在安卓应用开发的广阔天地中,自定义视图是一块神奇的画布,让开发者能够突破标准控件的限制,绘制出独一无二的用户界面。本文将带你走进自定义视图的世界,从基础概念到实战技巧,逐步揭示如何在安卓平台上创建和运用自定义视图来提升用户体验。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开新的视野,让你的应用在众多同质化产品中脱颖而出。
41 19