textview可复制_android长按点击

textview可复制_android长按点击有这么一个需求,用户在浏览文本信息时希望长按信息就能弹出复制的选项方便保存或者在别的页面使用这些信息.类似的,就像长按WebView或者EditText的内容就自动弹出复制选项.这里面主要是2个特点:1,用户只能浏览文本信息而不能编辑这些文本信息;2,用户对着文本信息长时间点按可以弹出”复制”选项实现复制;网上有好多种方法可实现,也比较零散,此处做个小结,希望有所帮助.1,通过继承EditT…

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

Jetbrains全系列IDE稳定放心使用

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

这里面主要是2个特点:

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

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

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

public class NewTextViewextends 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 对象.它负责管理复制后粘贴的这件事.

1

2

3

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

cmb.setText(content.trim());//将内容放入粘贴管理器,在别的地方长按选择”粘贴”即可

cm.getText();//获取粘贴信息

3,使用setTextIsSelectable()方法

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

1

2

TextView tv =new TextView(context);

tv.setTextIsSelectable(true);

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

原文链接:http://www.androidchina.net/1258.html

[Android] TextView长按复制实现方法小结(转载)

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

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

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

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

(0)


相关推荐

  • 串口服务器调试助手使用教程,串口调试助手使用教程【操作方式】

    串口服务器调试助手使用教程,串口调试助手使用教程【操作方式】喜欢使用电脑的小伙伴们一般都会遇到win7系统串口调试助手使用教程的问题,突然遇到win7系统串口调试助手使用教程的问题就不知道该怎么办了,其实win7系统串口调试助手使用教程的解决方法非常简单,按照1:打开电脑浏览器,进入百度搜索在输入框输入:友善串口助手,回车进行搜索,在第一条直接点击下载,安装即可.2:安装完成后,桌面上会有一个这样的图标我们双击打开.来操作就行了,接下来小伙伴们…

  • shell循环执行脚本[通俗易懂]

    shell循环执行脚本[通俗易懂]shell循环执行脚本2017年08月24日15:28:18阅读数:215foriin{1..10} do   echo"Welcome$itimes"   eoo$i.sh done

  • datatable删除行

    先列出正确的写法,如果你只想马上改错就先复制吧,如果你有时间想学习一下就继续看下面列出可能出错的可能性吧。1.如果只是想删除datatable中的一行,可以用DataRow的delete,但是必须

    2021年12月24日
  • 2022Android SDK下载与安装

    2022Android SDK下载与安装一、下载sdk:https://www.androiddevtools.cn找个合适的位置解压双击“SDKManager.exe”,启动SDKManager安装工具我们可以通过有AndroidSDK的国内镜像服务器来下载安装,这里推荐几个:1、中科院开源协会镜像站地址:IPV4/IPV6:http://mirrors.opencas.ac.cn端口:802、北京化工大学镜像服务器地址:IPv4:http://ubuntu.buct.edu.cn/端口:80IPv

  • java获取当前时间戳转换

    java获取当前时间戳转换 packagecom.pts.peoplehui.utils; importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.Date;importjava.util.Locale; publicclassDateUtils{    publicstaticString…

  • charles导致mac无法上网_mac可以ping通 但是浏览器上不了网

    charles导致mac无法上网_mac可以ping通 但是浏览器上不了网前言charles关闭后,发现网页突然打开了,那大概率是设置了代理,但明明已经关闭了charles,这是由于mac网络偏好设置中,使用的是手动代理,将其改为自动即可解决方法1打开网络偏好设置,

发表回复

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

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