监听EditText的复制、粘贴、全选、剪切、选择等状态
来源:互联网 发布:淘宝 企业店铺 假货 编辑:程序博客网 时间:2024/04/30 04:35
需要自定义EditText 并重写里面的 onTextContextMenuItem 方法:
package myapp.first.myapplication.view;import android.content.Context;import android.util.AttributeSet;import android.widget.EditText;/** * Created by Administrator on 2016/10/11 0011. */public class MyEditText extends EditText { public MyEditText(Context context) { super(context); } public MyEditText(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean onTextContextMenuItem(int id) {// id:16908319 --- 全选// id:16908328 --- 选择// id:16908320 --- 剪贴// id:16908321 --- 复制// id:16908322 --- 粘贴// id:16908324 --- 输入法 return super.onTextContextMenuItem(id); }}
详细介绍: ----- 请看源码中的英文注释
这些都被用id给赋值了 并且静态最终
这些id值点击是看不到的 需要 按ctrl 然后鼠标放到上面 可查看具体的 id值
static final int ID_SELECT_ALL = android.R.id.selectAll;static final int ID_UNDO = android.R.id.undo;static final int ID_REDO = android.R.id.redo;static final int ID_CUT = android.R.id.cut;static final int ID_COPY = android.R.id.copy;static final int ID_PASTE = android.R.id.paste;static final int ID_SHARE = android.R.id.shareText;static final int ID_PASTE_AS_PLAIN_TEXT = android.R.id.pasteAsPlainText;static final int ID_REPLACE = android.R.id.replaceText;/** * Called when a context menu option for the text view is selected. Currently * this will be one of {@link android.R.id#selectAll}, {@link android.R.id#cut}, * {@link android.R.id#copy}, {@link android.R.id#paste} or {@link android.R.id#shareText}. * * @return true if the context menu item action was performed. */public boolean onTextContextMenuItem(int id) { int min = 0; int max = mText.length(); if (isFocused()) { final int selStart = getSelectionStart(); final int selEnd = getSelectionEnd(); min = Math.max(0, Math.min(selStart, selEnd)); max = Math.max(0, Math.max(selStart, selEnd)); } switch (id) { case ID_SELECT_ALL: selectAllText(); return true; case ID_UNDO: if (mEditor != null) { mEditor.undo(); } return true; // Returns true even if nothing was undone. case ID_REDO: if (mEditor != null) { mEditor.redo(); } return true; // Returns true even if nothing was undone. case ID_PASTE: paste(min, max, true /* withFormatting */); return true; case ID_PASTE_AS_PLAIN_TEXT: paste(min, max, false /* withFormatting */); return true; case ID_CUT: setPrimaryClip(ClipData.newPlainText(null, getTransformedText(min, max))); deleteText_internal(min, max); return true; case ID_COPY: setPrimaryClip(ClipData.newPlainText(null, getTransformedText(min, max))); stopTextActionMode(); return true; case ID_REPLACE: if (mEditor != null) { mEditor.replace(); } return true; case ID_SHARE: shareSelectedText(); return true; } return false;}当我们复制了 一段带有表情的文本内容 粘贴到 edittext 上面时 表情的图标不会显示 会显示的是 表情的编码解决:可给自定义的EditText加个 监听回调 或者加个属性 在重写的方法中去记录这个 id值注意: 别用id这个字段 因为 系统的所有控件中 都存在 id这个属性 可以换个别的名字记录监听自定义EditText的 文本改变事件在事件中 根据 记录的 id值 判断执行相应的操作 (把复制的带表情编码的字符串进行编码转换 然后再设置到EditText)这样就可以实现赋值后的内容展示为 带标签图标到输入框中
2 0
- 监听EditText的复制、粘贴、全选、剪切、选择等状态
- 自定义EditText 的复制 、粘贴、剪切等
- android 监听EditText复制粘贴等操作
- android EditText 监听复制粘贴等操作
- EditText 屏蔽选择、复制、粘贴等一切剪切板的操作
- C#RichTextBox实现(复制, 剪切,粘贴,全选)
- 模拟键盘录入,复制粘贴剪切,全选
- Mac全选,剪切和复制粘贴
- 禁用UITextField的双击出现复制粘贴剪切等操作
- EditText 监听系统复制黏贴剪切的功能
- vim 的复制粘贴剪切
- bmp图像复制,剪切,粘贴等
- silverlight:向TextBox添加右键菜单,菜单包括复制、粘贴、剪切、选择全部等四项功能!
- richTextBox的右键菜单“复制、粘贴、剪切、全选、删除、撤销、重做”
- UITextView中打开或禁用复制,剪切,选择,全选等功能
- 记事本(含剪切、复制、粘贴、全选、撤销)核心设计
- 为RichTextBox添加快捷功能菜单(复制, 剪切,粘贴,全选)
- android EditText 屏蔽长按弹出剪切 复制 全选菜单 的解决办法
- BITCS2016程序设计 | 9. 一夜发白 《千字文》
- c!#!获!取!文!件!夹!中!的!图!标!资!源
- HTML5学习_day10(2)--css文件书写格式
- DG之主库、备库切换(物理备库)
- hdu 4758 Walk Through Squares AC自动机
- 监听EditText的复制、粘贴、全选、剪切、选择等状态
- 【bzoj 1029】 [JSOI2007]建筑抢修
- 如何取消ctrl+space以便在Myecplise中使用快捷键
- codeforces Gym 101102F
- MATLAB数组加减法
- 有一个分数序列:2/1, 3/2, 5/3, 8/5, 13/8, …编写程序求出这个序列的前n项之和。
- 关于RN的配置流程
- 用实例理解Storm的Stream概念
- 面试--华为资料开发工程师