android复制粘贴功能,Android TextView设置复制粘贴功能

一、前言:

1.文本拥有复制功能:

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

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();

}

三、详解:

控件里文本自由复制

//加上属性

android:textIsSelectable="true"

复制详情

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);

获取剪切板数据

ClipboardManager.getPrimaryClip();