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

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

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

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

 Ixx02 мая 2012 г., 09:05
@ Джермин Да, кажется, я должен сделать индивидуальное решение.
 Jermin Bazazian30 апр. 2012 г., 17:40
ClipboardManager доступно с API 1 (посмотрите наhere ). Как насчет долгого нажатия с всплывающим окном для копирования в буфер обмена?
 Ixx30 апр. 2012 г., 17:23
Это похоже, но не то же самое, потому что я хочу скопировать весь текст. Но это выглядит так же. Проблема в том, что ответ там работает только начиная с API 11, и мне нужно что-то, что работает из API 7.
 Jermin Bazazian30 апр. 2012 г., 17:21
Являетсяthis что ты ищешь?

Ответы на вопрос(8)

android:textIsSelectable.

т.е.android:textIsSelectable="true"

 Ixx02 мая 2012 г., 09:04
Кажется, работает только с API 11
 09 мар. 2013 г., 15:17
На самом деле это похоже на ошибку. Появляется на моем устройстве Samsung 4.2.2. Nexus7 и Nexus10 работает.code.google.com/p/android/issues/detail?id=26008
 09 мар. 2013 г., 14:26
@ powder366: я думаю, чтоEditTextPreference уже поддерживает копирование / вставку. Это, конечно, кажется, в приложении Настройки.
 14 нояб. 2014 г., 03:18
Работает только если вы включили тему с ActionBar
 09 мар. 2013 г., 14:17
Можно ли сделать это для EditTextPreference?

ДляEditText, in manifest inside the activity use android:windowSoftInputMode="adjustResize"

 04 мар. 2016 г., 15:17
Upvoted. Я не понимаю даунвот, это то, что решило проблему для меня, которая возникла только на Android 6!

вы можете выбрать один из следующих вариантов:

Change in layout file: add below property to your TextView

android:textIsSelectable="true"

In your Java class write this line to set it programmatically. myTextView.setTextIsSelectable(true);

И долгое нажатие на TextView вы можете увидеть панель действий копирования / вставки.

 05 мая 2016 г., 08:36
я делаю так когда я нажимаю на тексты на панели инструментов с «копировать» и & lt; выбрать все & lt; открытые кнопки. но после того, как я нажму на них, ничего не произойдет. Что я могу сделать?
 19 окт. 2016 г., 19:04
Работает только на уровне API 11 и выше.
 01 июл. 2016 г., 19:34
Это решение лучше, чем помеченное правильно с зеленой галочкой.

Requires API 11, Updated Code, previous method is deprecated

Solution for theme full screen without 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;
            }
        });

use theme

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

or

@android:style/Theme.WithActionBar

set TextView in xml

android:textIsSelectable="true"

see result

 18 нояб. 2018 г., 18:44
это не сработало для меня
Решение Вопроса

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();
    }
});
 10 янв. 2015 г., 20:49
Метод setText (CharSequence) из типа ClipboardManager устарел
 Ixx10 янв. 2015 г., 20:51
Да, хорошо, этот ответ более 2 лет назад. Не стесняйтесь редактировать или добавлять новый.
 11 сент. 2012 г., 02:15
Хорошей стратегией было бы использовать это вместе с ответом CommonsWare. С добавлениемandroid:textIsSelectable живет в макете, он просто будет игнорироваться на более низких уровнях API. Затем используйте решение Ixx в операторе if, который проверяет, находится ли уровень API ниже 11. Лучшее из обоих миров. Хорошая вещь оandroid:textIsSelectable в том, что он дает вам панель действий выбора текста платформы и имеет приятное нативное чувство.

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();
        }
    });

Requirement : Необходимо скопировать и вставить текст, который находится в текстовом виде.

OutCome : Используя textview, как только я нажал textview. Его автоматически копируется текст, который находится в textview.

Note: При импорте clipboardmanager попробуйте

Пожалуйста, предпочтите менеджер буфера обмена текста

import android.text.ClipboardManager; // prefer this 

стараться избегать содержимого менеджера буфера обмена

import android.content.ClipboardManager; // Not this

этот лучше:

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");
}

Ваш ответ на вопрос