我想为TextView启用标准复制粘贴(与EditText相同)。我该怎么做?
我尝试使用不可编辑的EditText,但是效果不佳(有时它变得可编辑,或者未显示复制粘贴叠加层)。通常,这可能不是一个好方法。
需要一个从API 7开始的可行解决方案。
ClipboardManager
自API 1起可用(请参见此处)。长按一下,弹出窗口复制到剪贴板怎么样?
我想为TextView启用标准复制粘贴(与EditText相同)。我该怎么做?
我尝试使用不可编辑的EditText,但是效果不佳(有时它变得可编辑,或者未显示复制粘贴叠加层)。通常,这可能不是一个好方法。
需要一个从API 7开始的可行解决方案。
ClipboardManager
自API 1起可用(请参见此处)。长按一下,弹出窗口复制到剪贴板怎么样?
Answers:
即 android:textIsSelectable="true"
EditTextPreference
已经支持复制/粘贴。似乎在“设置”应用中。
这适用于蜂窝前复制:
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();
}
});
android:textIsSelectable
在布局中添加了生命,因此在较低的API级别上只会被忽略。然后在if语句中使用Ixx的解决方案,该语句检查API级别是否低于11。有趣的android:textIsSelectable
是,它为您提供了平台的文本选择操作栏,并具有良好的本机感觉。
需要API 11,更新的代码,不建议使用以前的方法
全屏主题解决方案 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;
}
});
在xml textview中粘贴此代码
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中的文本。
OutCome:单击textview后,使用textview。它会自动复制textview中的文本。
注意:在导入剪贴板管理器时,请尽量选择
请喜欢文本剪贴板管理器
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.Text是将复制到剪贴板的Text。
这更好:
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");
}