【Android】Android长按复制文本功能[通俗易懂]

【Android】Android长按复制文本功能[通俗易懂]安卓一般能用到长按复制的控件Textview,Editext,可能也有WebView在开始之前先说一个我遇到的一个坑:viewGroup中有一个这个属性android:descendantFocusability=”blocksDescendants”这个属性有三个值:beforeDescendants:viewgroup会优先其子类控件而获取到焦点afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点blocksDescendants:vie

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

Jetbrains全系列IDE稳定放心使用

安卓一般能用到长按复制的控件Textview,Editext,可能也有WebView

在开始之前先说一个我遇到的一个坑:
viewGroup中有一个这个属性android:descendantFocusability=”blocksDescendants”
这个属性有三个值:

  • beforeDescendants:viewgroup会优先其子类控件而获取到焦点

  • afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点

  • blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点

在这里我们要用afterDescendants就好了。

Editext

直接上代码

   <EditText
            android:id="@+id/order_details_tv_order_number"
            style="@style/theme_loginEditText"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="2"
            android:background="@null"//背景设为null,去掉editText下划线
            android:editable="false"//不可编辑
            android:textIsSelectable="true"//文字内容可选
            android:gravity="right|center_vertical"
            android:lines="1"
            android:textColor="@color/pub_color_black"
            android:textCursorDrawable="@null"//游标设为null,去掉游标
            android:textSize="@dimen/text_h16"
            tools:text="2382787482347" />

如果遇到不能弹出系统复制的功能,加上以下代码绝对能复制成功

ClipboardManager cm =(ClipboardManager)getContext().getSystemService(Context.CLIPBOARD_SERVICE);
  cm.setText(orderDetailsTvOrderNumber.getText().toString());
 //ToastUtil.toastSth(getContext() , "文本已复制,快去粘贴吧~");

Textview

其实单单考虑长按复制,那就只需要获取到文本内容然后复制到粘贴板上,上代码:

ClipboardManager clipboard = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clipData = ClipData.newPlainText(null,text);// 把数据复制到剪贴板
clipboard.setPrimaryClip(clipData);

或者在布局中加上textIsSelectable这个属性:

android:textIsSelectable="true"

Webview

webview在加载链接之前想长按复制链接,其实原理也还是现获取webview要加载的内容然后把它复制到剪贴板

获取选中的内容要调用webView中的未公开函数getSelection 因此通过反射:

Method m = WebView.class.getMethod("getSelection", null);
m.setAccessible(true);
Object obj = m.invoke(webview, null);

obj.toString()就是选中的内容
然后就是把数据复制到剪贴板同上~

作者:Eternal_life
链接:https://www.jianshu.com/p/9dc0800eed5f
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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

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

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

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

(0)


相关推荐

  • TPM管理解决制造型企业成本大问题的常用手段

    TPM管理解决制造型企业成本大问题的常用手段

  • psd 替换智能图层的的实现-个性化定制网站

    psd 替换智能图层的的实现-个性化定制网站老板让做一个在线服装定制的网站,可合成服装的效果图遇到了难处,如果是单纯的图片叠加也比较简单,前端合成的话使用canvas两张图片合成在一起就可以了canvas合成衣服的效果图准备两张图片,一张是素材,一张是背景如下图他们加一块就得到了这样一张图满心欢喜找老板,实现了!!!,终于可以早早下班了,然并卵,老板说:素材为啥没有弯曲,做出来的图片不真实,方案被打回来之后再次研究方案1.弯曲写死,如果单纯定制杯子是没有问题的,因为他只有一种效果,如果定制的是衣服,风景画等等其他的商品效.

  • 神经网络与BP神经网络

    神经网络与BP神经网络

    2021年11月19日
  • CRC校验算法[通俗易懂]

    CRC(CyclicRedundancyCheck):循环冗余检验。在链路层被广泛使用的检错技术。CRC原理:1、发送端1.1、在发送端先将数据分组,每组k个数据。假定要传送的数据是M。1.2、在数据M后面添加供差错检测的n位冗余码,然后构成一帧发送出去,一共发送(k+n)位。虽然添加n位冗余码增大了数据传送的开销,但是可以进行差错检测,当传输可能出现差错时,付出这种代价是值

  • java实现发送邮件功能

    java实现发送邮件功能java实现发送邮件功能电子邮件开发在后台中是普遍存在的现象和功能,比如用户注册,系统自动发送一封电子邮件到用户邮箱;再比如密码找回,系统会自动把密码发送到用户邮箱;……等等,所以作为一名java程序员,还是有必要学会这项技能的。我是一名安卓开发人员,我们都知道在客户端和后台交互数据的时候用到了Http协议,那么相应的,邮箱传输也有自己的一套协议,如SMTP,POP3,IMAP。在原生的javaJ

  • redis广播模式_广播表

    redis广播模式_广播表介绍BroadcastReceiver是Android的四大组件之一,它作用于应用内、进程间重要的一种通信方式,能够将某个消息通过广播的形式传递给订阅的广播接收器中,下面我们就来分析一下广播注册到接收到消息Android源码到底做了些什么?源码解析registerReceiver时序图代码讲解我们跟着上面时序图来讲解代码先在MainActivityregisterR…

发表回复

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

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