EditText的长按事件会自动弹出上下文菜单,其中有“选择文字”“复制”“粘贴”等功能选项,想让TextView也具有这样的功能,经研究,EditText就是继承于TextView而来的,在TextView的源码中就存在“选择文字”“复制”“粘贴”等功能的代码,(但是为什么在布局中添加<TextView />组件却不能直接使用这些功能呢,尚有待研究),我发现一种简单方法可以使EditText“变成”具有“选择文字”“复制”“粘贴”等功能的“TextView”,在布局文件中这样写(注意:一定要写上粗体的那几句代码):
这样设置的EditText运行后展现出来的就像是一个TextView了
如果在书写代码时感觉用EditText当TextView很奇怪,可以自定义一个View继承于EditText,比如:
package com.test;
public class MyTextView extends EditText {
}
在布局文件中则写为:
-------------------------------------------------------------------------------------------------
以上方法虽然实现了文本的选择、复制等功能,但是感觉使用起来不方便,需要长按组件,在弹出的上下文菜单中选择“选择文本”,然后再去选中想要的字,这一系列的操作比较繁琐,用户体验不是很好。
下面再来研究一个比较灵活的自定义TextView的实现,可以直接选中文本的。
-------------------------------------------------------------------------------------------------
此效果的实现需要两个步骤:
1.选择 文本:
(有待研究)
2.设置到剪贴板中:
android的剪贴板功能,比如将文本复制到剪贴板或者从剪贴板复制数据等操作。使用起来很简单,系统给我们提供了很方便的接口,如下所示:
//获取剪贴板管理服务
ClipboardManager cm =(ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
//将文本数据复制到剪贴板
cm.setText(message);
//读取剪贴板数据(EditText的长按事件会自动弹出上下文菜单,其中有“粘贴”的功能选项,应该是调用了下面的方法获得要粘贴的数据。这个粘贴的功能系统已经实现了,不需要我们自己调用了。)
cm.getText();