Как включить стандартную копию для TextView в Android?
Я хочу включить стандартную копию для TextView (то же, что и для EditText). Как я могу это сделать?
Я попытался использовать редактируемый EditText, но он не работал (иногда он редактировался или наложение на копии не было показано). И это, вероятно, не очень хороший подход.
Требуется рабочее решение, начиная с API 7.
Ответы
Ответ 1
Это работает для копирования pre-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();
}
});
Ответ 2
Попробуйте android:textIsSelectable
.
Ответ 3
Чтобы включить стандартную копию/вставку для TextView, U может выбрать одно из следующих значений:
-
Изменение в файле макета: добавьте свойство ниже в свой TextView
android:textIsSelectable="true"
-
В вашем классе Java напишите эту строку, чтобы установить ее программно. myTextView.setTextIsSelectable(true);
И долгое нажатие на TextView вы можете увидеть панель действий копирования/вставки.
Ответ 4
Требуется 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;
}
});
Ответ 5
-
использовать тему
@android:style/Theme.Black.NoTitleBar.Fullscreen
или
@android:style/Theme.WithActionBar
-
установить TextView в xml
android:textIsSelectable="true"
-
см. результат
Ответ 6
Для текста редактирования,
в манифесте внутри использования активности
android: windowSoftInputMode = "adjustResize"
Ответ 7
this лучше:
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");
}