如何在Android中为TextView启用标准复制粘贴?
我想为TextView启用标准的复制粘贴(与EditText相同)。 我该怎么做?
我尝试使用不可编辑的EditText,但它不能正常工作(有时它成为可编辑或复制粘贴覆盖未显示)。 一般来说这可能不是一个好方法。
需要从API 7开始的工作解决scheme。
试试android:textIsSelectable
。
要启用TextView的标准复制/粘贴,U可以select以下选项之一:
-
更改布局文件:将下面的属性添加到您的TextView中
android:textIsSelectable="true"
-
在你的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; } });
-
使用主题
@android:style/Theme.Black.NoTitleBar.Fullscreen
要么
@android:style/Theme.WithActionBar
-
在XML中设置TextView
android:textIsSelectable="true"
-
看到结果
对于编辑文本,在活动内部的清单中使用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"); }