TextView长按复制的实现方法(总结)

发布时间 - 2026-01-11 00:46:30    点击率:

有这么一个需求,用户在浏览文本信息时希望长按信息就能弹出复制的选项方便保存或者在别的页面使用这些信息。类似的,就像长按WebView或者EditText的内容就自动弹出复制选项。

这里面主要是2个特点:

1、用户只能浏览文本信息而不能编辑这些文本信息;

2、用户对着文本信息长时间点按可以弹出”复制” 选项实现复制;

网上有好多种方法可实现,也比较零散, 此处做个小结,希望有所帮助。

1、通过继承EditText,自定义TextView

public class NewTextView extends EditText { 

public NewTextView(Context context) { 

super(context); 

// TODO Auto-generated constructor stub } 



public NewTextView(Context context, AttributeSet attrs) { 

super(context, attrs); 

// TODO Auto-generated constructor stub } 



public NewTextView(Context context, AttributeSet attrs, int defStyle) { 

super(context, attrs, defStyle); 

// TODO Auto-generated constructor stub } 



@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){   }

然后在onTouchEvent事件中拦截处理自定义的点按事件,弹出自定义的菜单。

原理如上, 更直白简单的方法是直接在xml中使用一个EditText,并且将属性设置为 android:editable=”false” .

2、使用OnLongClickListener

直接使用TextView,然后在代码里给TextView添加OnLongClickListener事件,长按时弹出自定义 “复制” 菜单(比如结合 PopupWindow做弹出菜单)。点击”复制” 就去获取TextView的内容。

当然, 这里只是获取内容,如何将内容放入粘贴管理器还需要一个ClipboardManager 对象。它负责管理复制后粘贴的这件事。

ClipboardManager cmb = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); 

cmb.setText(content.trim()); //将内容放入粘贴管理器,在别的地方长按选择"粘贴"即可 cm.getText();//获取粘贴信息

 3、使用setTextIsSelectable()方法

代码中直接对TextView使用setTextIsSelectable()方法,将TextView设置成可点按选择的即可。

TextView tv = new TextView(context); 

tv.setTextIsSelectable(true);

上面就是常见的长按文本信息弹出”复制”菜单的一些方法小结了,希望对大家有所帮助.

以上这篇TextView长按复制的实现方法(总结)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# textview长按复制  # Android开发之TextView控件用法实例总结  # Android textview 实现长按自由选择复制功能的方法  # 弹出  # 自定义  # 给大家  # 管理器  # 可点  # 就像  # 就能  # 中有  # 长时间  # 对着  # 这件事  # 希望能  # 做个  # 就去  # 还需要  # 种方法  # 这篇  # 设置为  # 这里面  # 小编 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  Linux系统命令中screen命令详解  制作公司内部网站有哪些,内网如何建网站?  Java解压缩zip - 解压缩多个文件或文件夹实例  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  bootstrap日历插件datetimepicker使用方法  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  b2c电商网站制作流程,b2c水平综合的电商平台?  西安专业网站制作公司有哪些,陕西省建行官方网站?  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  文字头像制作网站推荐软件,醒图能自动配文字吗?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  免费视频制作网站,更新又快又好的免费电影网站?  Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  教学论文网站制作软件有哪些,写论文用什么软件 ?  Bootstrap整体框架之JavaScript插件架构  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  Laravel如何使用查询构建器?(Query Builder高级用法)  Laravel怎么调用外部API_Laravel Http Client客户端使用  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  教你用AI将一段旋律扩展成一首完整的曲子  装修招标网站设计制作流程,装修招标流程?  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  如何彻底删除建站之星生成的Banner?  大学网站设计制作软件有哪些,如何将网站制作成自己app?  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  利用vue写todolist单页应用  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  WordPress 子目录安装中正确处理脚本路径的完整指南  如何用美橙互联一键搭建多站合一网站?  如何快速登录WAP自助建站平台?  百度浏览器如何管理插件 百度浏览器插件管理方法  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  怎么用AI帮你为初创公司进行市场定位分析?  javascript中的数组方法有哪些_如何利用数组方法简化数据处理  Laravel如何实现API版本控制_Laravel API版本化路由设计策略  Laravel如何发送系统通知?(Notification渠道示例)  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程