前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >textview可复制_长按复制是怎么做的

textview可复制_长按复制是怎么做的

作者头像
全栈程序员站长
发布2022-11-11 13:43:49
1.9K0
发布2022-11-11 13:43:49
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

前段时间因为项目需求实现TextView长按复制的功能,特意上百度差了一下有不少实现这个功能的方法,隔了好久也怕忘了,总结一下:

先推荐目前感觉最好用的方法:

在布局文件的TextView控件属性中增加一句话:android:textIsSelectable=”true”,不过这个方法需要只有android sdk 11起才支持,v11以下则不行了。不过现在的版本这个应该也不成问题了

xml文件中可以设置之外,在java代码上也可以一句话设置:

代码语言:javascript
复制
TextView tv = new TextView(context); tv.setTextIsSelectable(true); 

除了上面的方法之外还有其他可以实现功能的相关方法:

1、使用OnLongClickListener

使用TextView,,然后在代码里给TextView添加OnLongClickListener事件,长按时弹出自定义 “复制” 菜单(比如结合 PopupWindow做弹出菜单)。 点击”复制” 就去获取TextView的内容。(PS : 这里是获取内容,而我们还需要将内容放入粘贴管理器还需要一个ClipboardManager 对象.它负责管理复制后粘贴的这件事。目前的淘宝分享到微信使用的就是这个方法)

代码语言:javascript
复制
ClipboardManager cmb = (ClipboardManager)context.getSystemService(Context.CLIPBOARD_SERVICE); cmb.setText(content.trim()); //将内容放入粘贴管理器,在别的地方长按选择"粘贴"即可 cm.getText();//获取粘贴信息 

2、使用EditText,和TextView一样在xml里面直接加一句话android:editable=”false” 可以实现,不过需要注意,使用EditText的话需要设置一个背景色,或者设置空也行,缺点是不能在java代码中动态设置。

3、可以通过继承EditText,自定义TextView

代码语言:javascript
复制
public class SelectCopyTextView extends EditText { public SelectCopyTextView(Context context) { super(context); } public SelectCopyTextView(Context context, AttributeSet attrs) { super(context, attrs); } public SelectCopyTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override protected boolean getDefaultEditable() { //禁止EditText被编辑 return false; } } 

其中关键的一个方法是getDefaultEditable(),,return false;即禁止EditText被编辑,变成了不可编辑的EditText,但同时具有EditText的长按复制功能。如果查看了EditText源码,,也可以发现源码中有一个方法 protected void onCreateContextMenu(ContextMenu menu)

控制了EditText长按弹出的上下文菜单, 可以自定义这个方法且实现为空

protected void onCreateContextMenu(ContextMenu menu){ }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/187769.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月29日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档