Android 自定义EditText实现粘贴,复制,剪切的监听

package com.dwtedx.qq.view;

import android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.widget.EditText;
import android.widget.Toast;

/**
 * An EditText, which notifies when something was cut/copied/pasted inside it.
 *
 * @author Lukas Knuth
 * @version 1.0
 */
@SuppressLint("NewApi") public class MyEditText extends EditText implements
        MenuItem.OnMenuItemClickListener {
    private static final int ID_SELECTION_MODE = android.R.id.selectTextMode;
      // Selection context mode
    private static final int ID_SELECT_ALL = android.R.id.selectAll;
    private static final int ID_CUT = android.R.id.cut;
    private static final int ID_COPY = android.R.id.copy;
    private static final int ID_PASTE = android.R.id.paste;

    private final Context mContext;

    /*
     * Just the constructors to create a new EditText...
     */
    public MyEditText(Context context) {
        super(context);
        this.mContext = context;
    }

    public MyEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.mContext = context;
    }

    public MyEditText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        this.mContext = context;
    }

    @Override
    protected void onCreateContextMenu(ContextMenu menu) {    //代码效果,有弹出框选择 粘贴,复制,剪切,类似qq效果.....
        menu.add(0, ID_PASTE, 0, "粘贴").setOnMenuItemClickListener(this);
        menu.add(0, ID_CUT, 1, "剪切").setOnMenuItemClickListener(this);
        menu.add(0, ID_COPY, 1, "复制").setOnMenuItemClickListener(this);
        menu.add(0, ID_SELECT_ALL, 1, "全选").setOnMenuItemClickListener(this);
        super.onCreateContextMenu(menu);
    }

    @Override
    public boolean onMenuItemClick(MenuItem item) {
        // TODO Auto-generated method stub
        return onTextContextMenuItem(item.getItemId());
    }

    @Override
    public boolean onTextContextMenuItem(int id) {
        // Do your thing:
        boolean consumed = super.onTextContextMenuItem(id);
        // React:
        switch (id) {
        case android.R.id.cut:
            onTextCut();
            break;
        case android.R.id.paste:
            onTextPaste();
            break;
        case android.R.id.copy:
            onTextCopy();
        }
        return consumed;
    }

    /**
     * Text was cut from this EditText.
     */
    public void onTextCut() {
        Toast.makeText(mContext, "Cut!", Toast.LENGTH_SHORT).show();
    }

    /**
     * Text was copied from this EditText.
     */
    public void onTextCopy() {
        Toast.makeText(mContext, "Copy!", Toast.LENGTH_SHORT).show();
    }

    /**
     * Text was pasted into the EditText.
     */
    public void onTextPaste() {
        Toast.makeText(mContext, "Paste!", Toast.LENGTH_SHORT).show();
    }
}

 

时间: 2024-09-27 18:40:31

Android 自定义EditText实现粘贴,复制,剪切的监听的相关文章

旋转 文字添加-android 自定义edittext 拖动缩放旋转

问题描述 android 自定义edittext 拖动缩放旋转 最近在做一个拼图的项目,要求在一张背景图上添加文字,文字可编辑如修改颜色.样式.字体等,也可对文字的位置进行修改,实现拖动.旋转.缩放等功能,类似于美图秀秀中文字的添加,最后可将背景图和文字联合生成一张图片,保存到相册中,本人是菜鸟,求高手指教,如果有简单的demo的话,那就不胜感激. 解决方案 你好 请问解决了没有 请赐教

Android 自定义EditText输入框带清空按钮

Android 自定义EditText输入框带清空按钮 当用户输入字符后 EditText会自动在输入框的内部右侧出现删除按钮 重写EditText达到简化布局的效果 效果图: 继承EditText package com.example.myedittexttest; import android.content.Context; import android.graphics.Rect; import android.graphics.drawable.Drawable; import an

Android编程之DatePicker和TimePicke简单时间监听用法分析

本文实例讲述了Android编程之DatePicker和TimePicke简单时间监听用法.分享给大家供大家参考,具体如下: DatePicker和TimePicker都是从FrameLayout派生而来. 简单的例子实现对时间监听. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/

android view进入或移出屏幕内的监听事件有吗

问题描述 android view进入或移出屏幕内的监听事件有吗 android有没有view进入或滑出屏幕的监听事件呢 我的一个scrollview里面有很多view,我想要是有view进入或滑出屏幕的监听事件,不知道有没有这样的listener 解决方案 Rect scrollBounds = new Rect(); scrollView.getHitRect(scrollBounds); if (childView.getLocalVisibleRect(scrollBounds))则为出

Android实现双模(CDMA/GSM)手机短信监听的方法_Android

本文实例讲述了Android实现双模(CDMA/GSM)手机短信监听的方法.分享给大家供大家参考,具体如下: 一.问题分析: 最近在做一个通过短信远程启动应用的功能,要用到短信监听,代码如下: import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.telepho

Android开发之CheckBox的简单使用与监听功能示例

本文实例讲述了Android开发之CheckBox的简单使用与监听功能.分享给大家供大家参考,具体如下: activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_

Android实现双模(CDMA/GSM)手机短信监听的方法

本文实例讲述了Android实现双模(CDMA/GSM)手机短信监听的方法.分享给大家供大家参考,具体如下: 一.问题分析: 最近在做一个通过短信远程启动应用的功能,要用到短信监听,代码如下: import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.telepho

Android自定义EditText右侧带图片控件_Android

前言 最近项目做用户登录模块需要一个右边带图片的EditText,图片可以设置点击效果,所以就查资料做了一个自定义EditText出来,方便以后复用. 原理 下面是自定义EditText的代码,具体难点是要实现图片的点击监听,因为谷歌官方至今没有给出一个直接实现EditText里面图片的监听API.我的做法是整个控件绑定一个OnTouchListener,然后监测点击事件,检测点击位置的X坐标是否在图片的覆盖范围内(下面getCompoundDrawables()[2]里面的2是代表图片在Edi

小心,Android木马工具SpyNote免费啦!远程监听就是这么简单

只要是做生意,都得讲究价值规律,黑市也不例外.某款产品要是搞打折促销,群众们必然蜂拥而至--要是免费大派送,那一传十十传百的速度又怎是门庭若市可形容! 最近Palo Alto Networks发现了一款面向大众免费派发的RAT(远程访问木马),名为SpyNote--这是个可对Android系统实现远程监听的工具,"和OmniRat和DroidJak很相似".对那些技术不娴熟的脚本小子而言,想必又是个不可多得的好东西了. SpyNote控制面板 SpyNote能做什么? SpyNote实