读书点点APP & programAndroid

Android TextView设置复制粘贴功能

2022-03-16  本文已影响0人  i小灰

一、前言:

1.文本拥有复制功能:

在需要用到TextView的复制的功能的时候,我们只需要在xml文件中加一行代码就行:

<TextView
     android:id="@+id/item_alertDetailInfo_tvSolveTime"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:textIsSelectable="true"/>

设置textIsSelectable为true即可,但是这里有个巨坑,即便设置了这个属性,有时候还是会不能复制,于是百度良久发现如下答案答案

原因如下:
it works because the TextView has to layout again. You can trace the setText method to understand why. But layout a view is expansive. It’s an old bug of Android which google just don’t want to fix it.

解决办法:修改TextView的宽度为wrap_content即可,真是个巨坑。

二、剪切板的使用:

1. 复制到剪贴板

    /**
     * 复制到剪贴板
     * @param context
     * @param text
     */
    public static void putTextIntoClip(Context context,String  text){
        ClipboardManager clipboardManager = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
        //创建ClipData对象
        ClipData clipData = ClipData.newPlainText("HSFAppDemoClip", text);
        //添加ClipData对象到剪切板中
        clipboardManager.setPrimaryClip(clipData);
    }

2. 从剪贴板获取文字

public void getTextFromClip(Context context){
        ClipboardManager clipboardManager = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
        //判断剪切版时候有内容
        if(!clipboardManager.hasPrimaryClip())
            return;
        ClipData clipData = clipboardManager.getPrimaryClip();
        //获取 ClipDescription
        ClipDescription clipDescription = clipboardManager.getPrimaryClipDescription();
        //获取 lable
        String lable = clipDescription.getLabel().toString();
        //获取 text
        String text = clipData.getItemAt(0).getText().toString();
}

三、详解:

  1. 控件里文本自由复制
//加上属性
android:textIsSelectable="true"

  1. 复制详情
1.普通字符型
ClipData mClipData =ClipData.newPlainText("Label", "Content"); 
//‘Label’这是任意文字标签
2.url型
ClipData.newRawUri("Label",Uri.parse("http://www.baidu.com"));
3.intent型
ClipData.newIntent("Label", intent);

  1. 获取剪切板数据
ClipboardManager.getPrimaryClip();


参考:https://www.jianshu.com/p/b78e6697e15f
链接:https://www.jianshu.com/p/1e84d33154bd

上一篇 下一篇

猜你喜欢

热点阅读