Как включить стандартную копию для TextView в Android?

Я хочу включить стандартную скопированную копию для TextView (то же, что и для EditText). Как мне это сделать?

Я попытался использовать редактируемый EditText, но он не работал (иногда он редактировался или наложение на копии не было показано). И это, вероятно, не очень хороший подход.

Нужно рабочее решение, начиная с API 7.

Solutions Collecting From Web of "Как включить стандартную копию для TextView в Android?"

Попробуйте android:textIsSelectable .

Чтобы включить стандартную копию / вставку для TextView, U может выбрать один из следующих вариантов:

  1. Изменение в файле макета: добавьте свойство ниже в TextView

    android:textIsSelectable="true"

  2. В вашем классе 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; } }); 
  1. Использовать тему

     @android:style/Theme.Black.NoTitleBar.Fullscreen 

    или

     @android:style/Theme.WithActionBar 
  2. Установить TextView в xml

     android:textIsSelectable="true" 
  3. Видеть результат

Для текста редактирования, в манифесте внутри действия используйте 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"); }