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

textview可复制_长按复制是怎么做的前段时间因为项目需求实现TextView长按复制的功能,特意上百度差了一下有不少实现这个功能的方法,隔了好久也怕忘了,总结一下:先推荐目前感觉最好用的方法:在布局文件的TextView控件属性中增加一句话:android:textIsSelectable="true",不过这个方法需要只有androidsdk11起才支持,v11以下则不行了。不过现在的版本这个应该也不成问题了xml文件中可以设…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

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

先推荐目前感觉最好用的方法:
在布局文件的TextView控件属性中增加一句话:android:textIsSelectable=”true”,不过这个方法需要只有android sdk 11起才支持,v11以下则不行了。不过现在的版本这个应该也不成问题了
xml文件中可以设置之外,在java代码上也可以一句话设置:
TextView tv = new TextView(context); tv.setTextIsSelectable(true); 

除了上面的方法之外还有其他可以实现功能的相关方法:
1、使用OnLongClickListener
使用TextView,,然后在代码里给TextView添加OnLongClickListener事件,长按时弹出自定义 “复制” 菜单(比如结合 PopupWindow做弹出菜单)。 点击”复制” 就去获取TextView的内容。(PS : 这里是获取内容,而我们还需要将内容放入粘贴管理器还需要一个ClipboardManager 对象.它负责管理复制后粘贴的这件事。目前的淘宝分享到微信使用的就是这个方法)
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
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){ }

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 我为什么放弃Go语言

    我为什么放弃Go语言我为什么放弃Go语言?有好几次,当我想起来的时候,总是会问自己:这个决定是正确的吗?是明智和理性的吗?其实我一直在认真思考这个问题。开门见山地说,我当初放弃Go语言,就是因为两个“不爽”:第一,对Go语言本身不爽;第二,对Go语言社区里的某些人不爽。毫无疑问,这是非常主观的结论,但是我有足够详实的客观的论据。

  • c++入门教程–-7嵌套循环

    c++入门教程–-7嵌套循环

  • 使用 parted 对单个磁盘进行分区并进行配额「建议收藏」

    使用 parted 对单个磁盘进行分区并进行配额「建议收藏」文章目录1.实验要求2.实验步骤3.我的一次实验步骤1.实验要求虚拟机新增一个硬盘,大小大于10G,使用parted工具对磁盘进行分区,分区类型为ext4对新增分区设置磁盘配额,限制lisi用户最多允许使用200M的容量大小并最多允许创建10个文件2.实验步骤准备一个新虚拟机,我们用新环境进行实验VMware添加一块20G硬盘echo”—“>/sys/class/scsi_host/host0/scan#扫描主机fdis

  • 查看进程运行在哪个cpu_鲲鹏980CPU

    查看进程运行在哪个cpu_鲲鹏980CPU前言最近用华为鲲鹏跑了一段时间服务后,出现了系统负载40多居高不下的情况,一排查发现是kworker进程占用CPU很高,而且还杀不掉。通过华为的监控发现是磁盘I/O很高,重启服务器后能短暂解决问题,但是过几天负载还是会很高,导致很多进程被系统杀死。但是出现问题的就一台鲲鹏,其他的鲲鹏没有出现,通过比较发现内核版本不一样,执行uname-a输出如下正常的鲲鹏Linuxkpv7-pbx-00014.18.0-80.7.2.el7.aarch64#1SMPThuSep1216:1

  • 大数据开发工程师需要掌握什么技能?

    大数据开发工程师需要掌握什么技能?

  • Python学习笔记(28)-Python读取word文本「建议收藏」

    Python学习笔记(28)-Python读取word文本「建议收藏」一,简介Python可以利用python-docx模块处理word文档,处理方式是面向对象的。也就是说python-docx模块会把word文档,文档中的段落、文本、字体等都看做对象,对对象进行处理就是对word文档的内容处理。二,相关概念如果需要读取word文档中的文字(一般来说,程序也只需要认识word文档中的文字信息),需要先了解python-docx模块的几个概念。1,Document对象,

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号