【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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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

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

(0)
上一篇 2026年4月17日 下午4:22
下一篇 2026年4月17日 下午4:28


相关推荐

  • 《TCP/IP详解 卷1:协议》PDF分享

    《TCP/IP详解 卷1:协议》PDF分享TCP IP 详解 一共三卷 其中卷二 卷三更多偏重于编程细节 而卷一更多偏重于基础原理 基本上都是通过实验先看现象 然后再来引出其背后的原理 所以如果没有什么基础 还是踏踏实实从头看 这对于网络工程师 软件工程师同样适用 对于嵌入式工程师 这其实也很适用 网络从提出到现在 过去了那么多年 还是一直被使用着 这足以见到网络的强大之处 而原理的东西 是根本 因此我很建议大家认真读 不过在嵌入式上 很

    2026年3月19日
    2
  • Camel组件之Idempotent Consumer

    Camel组件之Idempotent ConsumerThe nbsp IdempotentCo nbsp fromthe nbsp EIPpatterns nbsp isusedtofilt Thispatterni nbsp IdempotentCo nbsp class Thisusesan nbsp Expression nbsp tocalculatea

    2026年3月17日
    3
  • Cisco路由器配置命令

    Cisco路由器配置命令伟人对我毫无意义 我只欣赏自己理想中的明星 尼采 善恶的彼岸 Cisco 工作模式思科的工作模式有四种用户模式 这一级别权限很低 只能查看路由器的基本状态 无法进行设置 一般是 Router gt 特权模式 这一级别用户可以使用 show 命令进行配置查看 但是还是无法进行配置 在用户模式下输入 enable 进入 一般是 Router 全局模式 这一级别下用户可以对路由器进行配置 特权模式下输入 configtermin 可以进入 一般是 Router config 端口模式

    2026年3月19日
    2
  • Iocomp 5.12 SP6 ActiveX Crack

    Iocomp 5.12 SP6 ActiveX Crack不需要安装,免去大家下载,Q578867473安装需要注册账号的麻烦的IocompActiveX/VCL标准包是由29个控件组成的套件,Q578867473用于使用ActiveX或VCL开发环境创建专业的仪表应用程序。这些控件可用于科学,工程,医学,石油和天然气,半导体,工厂自动化,航空航天,军事,机器人技术,电信,楼宇和家庭自动化,HMI,SCADA以及数百种其他类型的应用程序。所有Iocomp控件均启用OPC。如果您的项目需要OPC连接,则可以将任何属性连接到OPC项/标签。所有连接都可

    2022年7月25日
    13
  • 关于二进制补码

    关于二进制补码最近把大学期间没弄清楚的二进制补码理清了 谢谢网络 谢谢阮大牛 以下内容复制于阮一峰的博客 源地址链接问一个基本的问题 负数在计算机中如何表示 举例来说 8 在计算机中表示为二进制的 1000 那么 8 怎么表示呢 很容易想到 可以将一个二进制位 bit 专门规定为符号位 它等于 0 时就表示正数 等于 1 时就表示负数 比如 在 8 位机中 规定每个字节的最高位为符号位 那么

    2026年3月26日
    1
  • 月之暗面20天估值涨34亿 新融资或加速AGI布局

    月之暗面20天估值涨34亿 新融资或加速AGI布局

    2026年3月12日
    3

发表回复

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

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