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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Django(53)二次封装Response

    Django(53)二次封装Response前言有时候我们使用drf的Response,会发现默认返回的格式不太友好,每次我们都需要写入以下的格式returnResponse({"status":0,"

    2022年7月31日
    7
  • 迁移学习与代码举例

    迁移学习出现背景在有监督的机器学习和尤其是深度学习的场景应用中,需要大量的标注数据。标注数据是一项枯燥无味且花费巨大的任务,关键是现实场景中,往往无法标注足够的数据。而且模型的训练是极其耗时的。因此迁移学习营运而生。传统机器学习(主要指监督学习)基于同分布假设需要大量标注数据然而实际使用过程中不同数据集可能存在一些问题,比如数据分布差异标注数据过期训练数据过期,也就是好不容易标定…

    2022年4月15日
    112
  • mysql数据类型有哪几种_数据库 数据类型

    mysql数据类型有哪几种_数据库 数据类型Mysql支持的多种数据类型主要有:数值数据类型、日期/时间类型、字符串类型。整数浮点数&定点数注:定点数以字符串形式存储,对精度要求高时使用decimal较好;尽量避免对浮点数进行减法和比较运算。时间/日期类型字符串类型blog-二进制大对象,用来存储可变数量的数据。…

    2022年9月20日
    0
  • 在给elasticsearch安装head插件时,npm install 版本不匹配[通俗易懂]

    在给elasticsearch安装head插件时,npm install 版本不匹配

    2022年2月20日
    43
  • 开启2019,依然在路上

    依然在路上,享受每一天这一年,简单做,坚持做,沉下心,等待花开。现在已经是2019年2月份了,过完了年,开始上班了,回想过年的那些日子,真的是简单和快乐,如果经常看我博客的伙伴一定知道,我2018年写过很多次我的精神状态(有点抑郁),我很多次调整自己,尝试让自己快乐一点,但是一直很难摆脱那种心理消极不开心的状态。好在我陷入的不是很深,现在我感觉自己已经差不多走出来了,当我这段时间去回想2…

    2022年2月27日
    47
  • hashmap和hashtable和hashset的区别_Hashtable

    hashmap和hashtable和hashset的区别_Hashtable相同点:hashmap和Hashtable都实现了map接口不同点:Hashtable是不允许键或值为null的,HashMap的键值则都可以为null。实现方式不同:Hashtable继承了Dictionary类,而HashMap继承的是AbstractMap类。初始化容量不同:HashMap的初始容量为:16,Hashtable初始容量为:11,两者的负载因子默认都是:0.75。扩容机制不同:当已用容量>总容量*负载因子时,HashMap扩容规则为当前

    2022年9月18日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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