154 votes

Comment puis-je activer le copier-coller standard pour un TextView dans Android ?

Je veux activer le copier-coller standard pour un TextView (le même que pour EditText). Comment je peux le faire ?

J'ai essayé d'utiliser un EditText non modifiable, mais il n'a pas bien fonctionné (parfois, il est devenu modifiable ou la superposition de copier-coller n'a pas été affichée). Et ce n'est probablement pas une bonne approche en général.

Besoin d'une solution de travail à partir de l'API 7.

281voto

CommonsWare Points 402670

Essayez android:textIsSelectable.

c'est-à-dire android:textIsSelectable="true"

66voto

RamiReddy Points 1049

Pour activer le copier/coller standard pour TextView, vous pouvez choisir l'une des options suivantes :

  1. Modification du fichier de mise en page : ajouter la propriété ci-dessous à votre TextView

    android:textIsSelectable="true"

  2. Dans votre classe Java, écrivez cette ligne pour la définir par programme. myTextView.setTextIsSelectable(true);

Et appuyez longuement sur la barre d'action TextView que vous pouvez voir copier/coller.

27voto

Ixx Points 7104

Cela fonctionne pour la copie pré-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();
    }
});

12voto

AZ_ Points 7127

Nécessite API 11, code mis à jour, la méthode précédente est obsolète

Solution pour le thème plein écran sans ActionBar

Prolonger TextView et dans la pâte du constructeur suivant le code

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X