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

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


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)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • JavaIO BufferedReader和BufferedWriter介绍和实例

    JavaIO BufferedReader和BufferedWriter介绍和实例BufferedReader和BufferedWriter简介为了提高字符流读写的效率,引入了缓冲机制,进行字符批量的读写,提高了单个字符读写的效率。BufferedReader用于加快读取字符的速度,BufferedWriter用于加快写入的速度BufferedReader和BufferedWriter类各拥有8192个字符的缓冲区。当BufferedReader在读取文本文件时,会先尽…

    2022年5月1日
  • C语言——求两个数的最大公约数和最小公倍数

    C语言——求两个数的最大公约数和最小公倍数求两个数的最大公约数的常用方法:※“辗转相除法”,又名欧几里得算法。基本方法如下:设两数为a和b(a>b),用a除以b,得a÷b=q……r,若r=0,则最大公约数为b;若r≠0,则再用b÷r,得b÷r=q……r’,若r’=0,则最大公约数为r’,若r’≠0,则继续用r÷r’……直到能够整除为止,此时的除数即为最大公约数。例如:a=99,b=18。a÷b=99÷18…

    2022年5月17日
  • 符合python命名规范的标识符是什么_Python标识符命名规范

    符合python命名规范的标识符是什么_Python标识符命名规范简单地理解,标识符就是一个名字,就好像我们每个人都有属于自己的名字,它的主要作用就是作为变量、函数、类、模块以及其他对象的名称。Python中标识符的命名不是随意的,而是要遵守一定的命令规则,比如说:大理石平台生产厂标识符是由字符(A~Z和a~z)、下划线和数字组成,但第一个字符不能是数字。标识符不能和Python中的保留字相同。有关保留字,后续章节会详细介绍。Python中的标识符中,…

    2022年6月25日
  • sql 左连接数据出现重复[通俗易懂]

    目录一、简化举例二、查询结果一、简化举例1、表aa2、表bb二、查询结果1、无条件查询2、左链接查询右表数据有重复时,连接关系如下所以查询数据会出现重复,所以要保证右表所关联唯一…

    2022年4月9日
  • dubbo如何实现rpc调用_dubbo支持grpc

    dubbo如何实现rpc调用_dubbo支持grpc使用telnet测试dubborpc接口

    2022年10月7日
  • 【Java 代码实例 14】BeanUtils用法详解,附源码分析

    【Java 代码实例 14】BeanUtils用法详解,附源码分析目录一、org.apache.commons.beanutils.BeanUtils简介二、使用的前置条件三、添加pom四、代码实例1、为属性赋值2、拷贝对象,为对象赋值3、map转bean4、bean转map五、Apache的BeanUtils与Spring的BeanUtils一、org.apache.commons.beanutils.BeanUtils简介BeanUtils是ApacheCommons组件的成员之一,主要用于简化JavaBean封装数据的操作。​简化反射封装参数的步骤,给对象封

    2022年9月11日

发表回复

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

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