• Android之菜单二——上下文菜单


    上下文菜单不同于选项菜单,选项菜单服务于Activity,而上下文菜单则是注册到某个View对象上的。

    如果一个View对象注册了上下文菜单,用户可以通过长按该View对象以呼出上下文菜单。

    上下文菜单不支持快捷键,其菜单选项也不能附带图标,但是可以为上下文菜单的标题指定图标。

    以下模拟上下文菜单

    main.xml布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout android:id="@+id/LinearLayout01"
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:orientation="vertical"
        xmlns:android="http://schemas.android.com/apk/res/android">
        <EditText android:text="第一文本框" 
            android:id="@+id/editText01"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
        <EditText android:text="第二文本框" 
            android:id="@+id/editText02"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>
    

    MeunActivity类

    package com.ljq.activity;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.ContextMenu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.ContextMenu.ContextMenuInfo;
    import android.widget.EditText;
    
    public class MeunActivity extends Activity {
        private EditText editText01=null;
        private EditText editText02=null;
        
        private final int MENU1 = 1;
        private final int MENU2 = 2;
        private final int MENU3 = 3;
        private final int MENU4 = 4;
        private final int MENU5 = 5;
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            editText01=(EditText)findViewById(R.id.editText01);
            editText02=(EditText)findViewById(R.id.editText02);
            
            //为View对象注册上下文菜单
            this.registerForContextMenu(editText01);
            this.registerForContextMenu(editText02);
        }
        
        /**
         * 初始化上下文菜单
         * 
         * 每次调出上下文菜单时都会被调用一次
         */
        @Override
        public void onCreateContextMenu(ContextMenu menu, View v,
                ContextMenuInfo menuInfo) {
            menu.setHeaderIcon(R.drawable.header);
            switch (v.getId()) {
            case R.id.editText01:
                menu.add(0, MENU1, 0, "菜单项1");
                menu.add(0, MENU2, 0, "菜单项2");
                menu.add(0, MENU3, 0, "菜单项3");
                break;
            case R.id.editText02:
                menu.add(0, MENU4, 0, "菜单项4");
                menu.add(0, MENU5, 0, "菜单项5");
                break;
            }
            //super.onCreateContextMenu(menu, v, menuInfo);
        }
        
        /**
         *  当用户选择了上下文菜单选项后调用该事件
         */
        @Override
        public boolean onContextItemSelected(MenuItem item) {
            switch (item.getItemId()) {
            case MENU1:
            case MENU2:
            case MENU3:
                editText01.append("\n"+item.getTitle()+"被按下");
                break;
            case MENU4:
            case MENU5:
                editText02.append("\n"+item.getTitle()+"被按下");
                break;
            }
            return true;
        }
        
    }
    

    运行结果

    1、 2、

     

  • 相关阅读:
    POJ:2431-Expedition
    poj:3253-Fence Repair
    POJ:3617-Best Cow Line(贪心)
    IOS各种传值方式
    imageDownloader
    Android放大镜的实现
    Delphi 串口通信(1)
    UVA 10131
    Skew Join与Left Semi Join相关
    Android动画 fillAfter和fillBefore
  • 原文地址:https://www.cnblogs.com/DswCnblog/p/2644566.html
Copyright © 2020-2023  润新知