zoukankan      html  css  js  c++  java
  • 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(); } }
  • 相关阅读:
    python gevent(协程模块)
    python基础之socket与socketserver
    python 使用 with open() as 读写文件
    Python logger模块
    python二维码操作:QRCode和MyQR入门
    常见的端口号及其用途
    python中hasattr()、getattr()、setattr()函数的使用
    mysql数据库自带数据库介绍
    关于BeautifulSoup4 解析器的说明
    学习opencv(1)
  • 原文地址:https://www.cnblogs.com/spring87/p/4357361.html
Copyright © 2011-2022 走看看