如何在Android中为TextView启用标准复制粘贴?

我想为TextView启用标准的复制粘贴(与EditText相同)。 我该怎么做?

我尝试使用不可编辑的EditText,但它不能正常工作(有时它成为可编辑或复制粘贴覆盖未显示)。 一般来说这可能不是一个好方法。

需要从API 7开始的工作解决scheme。

试试android:textIsSelectable

要启用TextView的标准复制/粘贴,U可以select以下选项之一:

  1. 更改布局文件:将下面的属性添加到您的TextView中

    android:textIsSelectable="true"

  2. 在你的Java类中写下这行代码来设置它。 myTextView.setTextIsSelectable(true);

而长按TextView就可以看到复制/粘贴的动作条。

这适用于Honeycomb之前的复制:

 import android.text.ClipboardManager; textView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { ClipboardManager cm = (ClipboardManager)context.getSystemService(Context.CLIPBOARD_SERVICE); cm.setText(textView.getText()); Toast.makeText(context, "Copied to clipboard", Toast.LENGTH_SHORT).show(); } }); 

需要API 11 ,更新的代码,以前的方法已被弃用

不带 ActionBar 主题全屏解决scheme

扩展TextView并在构造器中粘贴以下代码

 this.setOnLongClickListener(new OnLongClickListener() { @Override public boolean onLongClick(View v) { ClipboardManager cManager = (ClipboardManager) mContext.getSystemService(Context.CLIPBOARD_SERVICE); ClipData cData = ClipData.newPlainText("text", getText()); cManager.setPrimaryClip(cData); Util.toast(mContext, string.text_copyed); return true; } }); 
  1. 使用主题

     @android:style/Theme.Black.NoTitleBar.Fullscreen 

    要么

     @android:style/Theme.WithActionBar 
  2. 在XML中设置TextView

     android:textIsSelectable="true" 
  3. 看到结果

对于编辑文本,在活动内部的清单中使用android:windowSoftInputMode =“adjustResize”

这样比较好:

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { final android.content.ClipboardManager clipboardManager = (android.content.ClipboardManager) context .getSystemService(Context.CLIPBOARD_SERVICE); final android.content.ClipData clipData = android.content.ClipData .newPlainText("text label", "text to clip"); clipboardManager.setPrimaryClip(clipData); } else { final android.text.ClipboardManager clipboardManager = (android.text.ClipboardManager) context .getSystemService(Context.CLIPBOARD_SERVICE); clipboardManager.setText("text to clip"); }