<!-- 定义基础布局LinearLayout -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
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"
android:orientation="vertical">
<!-- 定义TextView控件 -->
<EditText
android:id="@+id/Et"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="长按弹出内容菜单"
/>
</LinearLayout>
package com.example.yanlei.yl2;

import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast; //导入必备的包 public class MainActivity extends AppCompatActivity { //定义ContextMenu中每个菜单选项的Id
final int Menu_1 = Menu.FIRST;
final int Menu_2 = Menu.FIRST + 1;
final int Menu_3 = Menu.FIRST + 2;
EditText Et;
private ClipboardManager mClipboard = null; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); // 调用父类的onCreate方法
// 通过setContentView方法设置当前页面的布局文件为activity_main
setContentView(R.layout.activity_main);
//获得布局中的控件
Et = (EditText)findViewById(R.id.Et);
//给EditText注册上下文菜单
registerForContextMenu(Et);
} //创建ContextMenu菜单的回调方法
public void onCreateContextMenu(ContextMenu m, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(m,v,menuInfo); //在上下文菜单选项中添加选项内容
//add方法的参数:add(分组id,itemid, 排序, 菜单文字)
m.add(0, Menu_1, 0, "复制文字");
m.add(0, Menu_2, 0, "粘贴文字");
m.add(0, Menu_3, 0, "全选文字");
}
private void copyFromEditText1() { // Gets a handle to the clipboard service.
if (null == mClipboard) {
mClipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); } // Creates a new text clip to put on the clipboard
ClipData clip = ClipData.newPlainText("simple text",Et.getText()); // Set the clipboard's primary clip.
mClipboard.setPrimaryClip(clip);
}
private void pasteToResult() {
// Gets a handle to the clipboard service.
if (null == mClipboard) {
mClipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
} String resultString = "";
// 检查剪贴板是否有内容
if (!mClipboard.hasPrimaryClip()) {
Toast.makeText(MainActivity.this,
"Clipboard is empty", Toast.LENGTH_SHORT).show();
}
else {
ClipData clipData = mClipboard.getPrimaryClip();
int count = clipData.getItemCount(); for (int i = 0; i < count; ++i) { ClipData.Item item = clipData.getItemAt(i);
CharSequence str = item
.coerceToText(MainActivity.this);
Log.i("mengdd", "item : " + i + ": " + str); resultString += str;
} }
Toast.makeText(this, resultString, Toast.LENGTH_SHORT).show();
Et.setText(resultString);
} //ContextMenu菜单选项的选项选择的回调事件
public boolean onContextItemSelected(MenuItem item) {
//参数为用户选择的菜单选项对象
//根据菜单选项的id来执行相应的功能
switch (item.getItemId()) {
case 1:
Toast.makeText(this, "复制文字", Toast.LENGTH_SHORT).show();
copyFromEditText1();
break;
case 2:
Toast.makeText(this, "粘贴文字", Toast.LENGTH_SHORT).show();
pasteToResult();
break;
case 3:
Toast.makeText(this, "全选文字", Toast.LENGTH_SHORT).show();
Et.selectAll();
break;
}
return super.onOptionsItemSelected(item);
}
}

android 长按弹出菜单,复制,粘贴,全选的更多相关文章

  1. Android ListView两种长按弹出菜单方式

    转自:http://www.cnblogs.com/yejiurui/p/3247527.html package com.wyl.download_demo; import java.util.Ar ...

  2. VC++6.0/MFC 自定义edit 限制输入内容 响应复制粘贴全选剪切的功能

    Ctrl组合键ASCII码 ^Z代表Ctrl+z                     ASCII值 控制字符  ASCII值 控制字符  ASCII值 控制字符  ASCII值 控制字符0(00) ...

  3. 【转】MFC 自定义edit 限制输入十六进制内容 响应复制粘贴全选剪切的功能

    参考地址:MFC 自定义edit 限制输入内容 响应复制粘贴全选剪切的功能   Ctrl组合键ASCII码 ^Z代表Ctrl+z                     ASCII值 控制字符  AS ...

  4. 【转】android创建Popwindow弹出菜单的两种方式

    方法一的Activity package com.app.test02; import android.app.Activity; import android.os.Bundle; import a ...

  5. IOS WebView修改contentInset 导致webview长按弹出菜单跳动的解决方法

    最近在项目中需要用到webview 加载H5 并且在webview 底部使用原生UI添加其他空间比如广告.或者评论(Scrollview) 最初使用修改webview中scrollview 的cont ...

  6. js 禁止复制粘贴全选

    // 取消右键菜单document.oncontextmenu = function(e){ var t = e || window.event; var elm = t.target || t.sr ...

  7. Android 按Menu弹出菜单

    \res\anim\menu_in.xml    资源文件(动画) <?xml version="1.0" encoding="UTF-8"?> & ...

  8. Android 使用PopupWindow实现弹出菜单

    在本文当中,我将会与大家分享一个封装了PopupWindow实现弹出菜单的类,并说明它的实现与使用. 因对界面的需求,android原生的弹出菜单已不能满足我们的需求,自定义菜单成了我们的唯一选择,在 ...

  9. Android开发技巧——使用PopupWindow实现弹出菜单

    在本文当中,我将会与大家分享一个封装了PopupWindow实现弹出菜单的类,并说明它的实现与使用. 因对界面的需求,android原生的弹出菜单已不能满足我们的需求,自定义菜单成了我们的唯一选择,在 ...

随机推荐

  1. CSS 隐藏 visibility 属性

    定义和用法 visibility 属性规定元素是否可见. 提示:即使不可见的元素也会占据页面上的空间.请使用 "display" 属性来创建不占据页面空间的不可见元素. 说明 这个 ...

  2. mysqldump指令说明

    3种形式mysqldump [OPTIONS] database [tables]mysqldump [OPTIONS] -B | --databases [OPTIONS] DB1 [DB2 DB3 ...

  3. Git学习——版本切换

    版本回退 回退到前面几个版本的命令如下: git reset --hard HEAD^ //回退到前一个版本 git reset --hard HEAD^^ //回退到前前一个版本 git reset ...

  4. perl学习笔记之:正则表达式

     Perl 中的正则表达式 正则表达式的三种形式  正则表达式中的常用模式  正则表达式的 8 大原则          正则表达式是 Perl 语言的一大特色,也是 Perl 程序中的一点难点,不过 ...

  5. LeetCode(2)Add Two Numbers

    题目: You are given two linked lists representing two non-negative numbers. The digits are stored in r ...

  6. Java基础知识:集合框架

    *本文是最近学习到的知识的记录以及分享,算不上原创. *参考文献见链接. 目录 集合框架 Collection接口 Map接口 集合的工具类 这篇文章只大致回顾一下Java的总体框架. 集合框架 ht ...

  7. 初识LiveScript

        The LiveScript Book 邂逅 LiveScript 就像很多现代化的语言一样,LiveScript 使用缩进来表示语句块,使用换行取代分号来表示一个语句的结束 (如果你想要一行 ...

  8. python--getitem一拦截索引运算

    getitem一拦截索引运算 __getitem__方法拦截实例的索引运算.当实例x出现在x[i]这样的索引运算中时,Python会调用这个实例继承的__getitem__方法(如果有的话),把x作为 ...

  9. 【转】DCOM远程调用权限设置

    原文:https://blog.csdn.net/ervinsas/article/details/36424127 最近几天被搞得焦头烂额,由于DCOM客户端程序是在32位系统下开发的,调试时DCO ...

  10. .NET重构(八):周结账单中,给报表添加参数

    导读:进行完了日结报表的制作,大松一口气.不过,刚开始看着周结账单中的两个参数问题,也是愁了很久.不过,只要思想不滑坡,办法总比困难多.接下来,就写写我制作周结账单报表的过程. 一.添加参数 1,在日 ...