android 复制控件,Android长按复制文本功能[通俗易懂]

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

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

Jetbrains全系列IDE稳定放心使用

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

在开始之前先说一个我遇到的一个坑:

viewGroup中有一个这个属性android:descendantFocusability=”blocksDescendants”

这个属性有三个值:

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

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

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

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

Editext

直接上代码

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()就是选中的内容

然后就是把数据复制到剪贴板同上~

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

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

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


相关推荐

  • Page.RegisterStartupScript的使用方法

    Page.RegisterStartupScript的使用方法用于后台输出Javascript执行段打开一个新窗口:Page.RegisterStartupScript(“starup”,”<scriptlanguage=’javascript’>window.open(‘”+url+”‘,”,’toolbar=no,resizable=yes,scrollbars=yes’)</script>”)警告…

    2022年7月20日
    14
  • Dockerfile add_dockerfile copy和add区别

    Dockerfile add_dockerfile copy和add区别前言Dockerfile中提供了两个非常相似的命令COPY和ADD,本文尝试解释这两个命令的基本功能,以及其异同点,然后总结其各自适合的应用场景。Build上下文的概念在使用dock

    2022年7月30日
    7
  • 一位Erlang程序猿的自白

    一位Erlang程序猿的自白

    2021年11月30日
    34
  • 数据结构C语言严蔚敏版(第二版)超详细笔记附带课后习题[通俗易懂]

    数据结构C语言严蔚敏版(第二版)超详细笔记附带课后习题[通俗易懂]根据此书所做随笔笔记。一、绪论1.1、数据机构的研究内容用计算机解决实际问题时,步骤:首先分析实际问题,从中抽象出一个适当的数学模型,然后设计一个解决此数学模型的算法,最后编程,调试,测试。寻求数据模型的实质是分析问题,从中提取出计算机处理的对象,并找出这些对象之间的关系,然后用数学的语言加以描述。关键:分析问题中所用到的数据是如何组织的,研究数据之间存在什么样的关系。由于数据必须在计算机中处理,因此不能局限于数据本身的数学问题的研究,还必须考虑数据的物理结构,即数据在计算机中的存储结构。1.

    2022年6月10日
    94
  • 《JavaScript 模式》读书笔记(7)— 设计模式3「建议收藏」

    这一篇,我们学习本篇中最为复杂的三个设计模式,代理模式、中介者模式以及观察者模式。这三个模式很重要!!七、代理模式在代理设计模式中,一个对象充当另一个对象的接口。它与外观模式的区别之处在于,外观模

    2022年3月25日
    46
  • Vue前端项目-主页布局-左侧导航菜单(静态)[通俗易懂]

    Vue前端项目-主页布局-左侧导航菜单(静态)[通俗易懂]目录1、修改侧边栏组件2、滚动条样式3、导入并使用组件实现效果:NavMenu的详细用法:https://element.eleme.cn/#/zh-CN/component/menu1、修改侧边栏组件为侧边栏组件,添加导航菜单侧边栏组件:src/layout/components/Sidebar/index.vue<tem…

    2022年7月26日
    30

发表回复

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

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