如何在Android中为TextView启用标准复制粘贴?
我想为TextView启用标准复制粘贴(与EditText相同)。我怎么做 我尝试使用不可编辑的EditText,但效果不好(有时它会变成可编辑的,或者没有显示复制粘贴覆盖)。一般来说,这可能不是一个好方法 需要从API 7开始的工作解决方案。尝试如何在Android中为TextView启用标准复制粘贴?,android,textview,copy-paste,Android,Textview,Copy Paste,我想为TextView启用标准复制粘贴(与EditText相同)。我怎么做 我尝试使用不可编辑的EditText,但效果不好(有时它会变成可编辑的,或者没有显示复制粘贴覆盖)。一般来说,这可能不是一个好方法 需要从API 7开始的工作解决方案。尝试 i、 例如,android:textIsSelectable=“true”这适用于复制前蜂窝: import android.text.ClipboardManager; textView.setOnClickListener(new View.O
i、 例如,
android:textIsSelectable=“true”
这适用于复制前蜂窝:
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();
}
});
要启用TextView的标准复制/粘贴,您可以选择以下选项之一:
android:textIsSelectable=“true”
ActionBar
扩展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:WindowsOfInputMode=“adjustResize”
@android:style/Theme.Black.NoTitleBar.Fullscreen
或
android:textIsSelectable="true"
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");
}
在xml文本视图中粘贴此代码
android:textIsSelectable="true"
然后在java文件中
final TextView txtcopypaste = findViewById(R.id.txtcopypaste); // my textview
txtcopypaste.setOnClickListener(new View.OnClickListener() { // set onclick listener to my textview
@Override
public void onClick(View view) {
ClipboardManager cm = (ClipboardManager)getApplicationContext().getSystemService(Context.CLIPBOARD_SERVICE);
cm.setText(txtcopypaste.getText().toString());
Toast.makeText(getApplicationContext(), "Copied :)", Toast.LENGTH_SHORT).show();
}
});
要求:需要复制并粘贴文本视图中的文本
结果:单击textview后,使用textview。它会自动复制textview中的文本
注意:导入剪贴板管理器时,请尝试选择
请选择文本剪贴板管理器
import android.text.ClipboardManager; // prefer this
import android.content.ClipboardManager; // Not this
尽量避免使用内容剪贴板管理器
import android.text.ClipboardManager; // prefer this
import android.content.ClipboardManager; // Not this
如果有人想多走一步,只需单击一下,即可选择并复制到剪贴板:
phone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("PhoneNumber", phone.getText());
clipboard.setPrimaryClip(clip);
}
});
phone是
TextView
和phone。Text
是将复制到剪贴板的文本。是您要查找的吗?它类似,但不相同,因为我要复制所有文本。但看起来是一样的。问题是,这里的答案只能从API 11开始工作,我需要从API 7开始工作的东西。ClipboardManager
从API 1开始就可用(请看)。长按一下,然后弹出一个窗口复制到剪贴板怎么样?@Jermin是的,看来我必须制定一个自定义解决方案。一个好的策略是将此与Commonware的答案一起使用。由于添加android:textIsSelectable
存在于布局中,因此在较低的API级别上它将被忽略。然后在if语句中使用Ixx的解决方案,检查API级别是否低于11。两全其美。android:textIsSelectable的好处在于它提供了平台的文本选择操作栏,并且有一种很好的本地感觉。ClipboardManager类型中的方法setText(CharSequence)是不受欢迎的,这个答案是两年多前的。请随意编辑或添加一个新的。是否可以为EditTextPreference执行此操作?@powder366:我认为EditTextPreference
已经支持复制/粘贴。在设置应用程序中,它似乎确实存在。实际上,它似乎是一个bug。显示在我的三星4.2.2设备上。Nexus7和Nexus10可以工作。请注意,如果您的文本视图最初是隐藏的,并且您使用setVisibility以编程方式显示它,那么您需要使用textView.setTextIsSelectable(true)来实现这一点。在这种情况下,它不能通过xml工作。我是这样做的。当我点击文本时,工具栏上的“复制”和“选择”按钮打开。但在我点击它们之后,什么都没有发生。我能做什么?这个解决方案比用绿色复选标记为“正确”的解决方案好。