Как включить стандартную вставку копирования для TextView в Android?
Я хочу включить стандартную вставку копирования для TextView (то же самое, что и для EditText). Как я могу это сделать?
Я попытался использовать не редактируемый EditText, но он не работал хорошо (иногда он становился редактируемым или наложение copy paste не отображалось). И это, вероятно, не очень хороший подход в целом.
нужно рабочее решение, начиная с API 7.
7 ответов:
попробовать
android:textIsSelectable
.т. е.
android:textIsSelectable="true"
чтобы включить стандартное копирование / вставку для TextView, вы можете выбрать один из следующих вариантов:
изменить файл макета: добавить свойство ниже в свой TextView
android:textIsSelectable="true"
в вашем классе Java напишите эту строку, чтобы установить ее программно.
myTextView.setTextIsSelectable(true);
и длительное нажатие на TextView вы можете увидеть панель действий копирования / вставки.
это работает для копирования 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(); } });
требуется 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; } });
темы
@android:style/Theme.Black.NoTitleBar.Fullscreen
или
@android:style/Theme.WithActionBar
установить TextView в xml
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"); }