wake-up-neo.com

Wie aktiviere ich das Standardkopie-Einfügen für eine TextView in Android

Ich möchte das Standardkopie-Einfügen für ein TextView aktivieren (das gleiche wie für EditText). Wie kann ich es tun?

Ich habe versucht, einen nicht bearbeitbaren EditText zu verwenden, aber er funktionierte nicht gut (manchmal wurde er bearbeitbar oder die Überlagerung zum Kopieren/Einfügen wurde nicht angezeigt). Und im Allgemeinen ist es wahrscheinlich kein guter Ansatz.

Benötigen Sie eine funktionierende Lösung, die bei API 7 beginnt.

91
Ixx

Dies funktioniert für das Kopieren vor 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();
    }
});
19
Ixx

Versuchen Sie Android:textIsSelectable .

d.h. Android:textIsSelectable="true"

177
CommonsWare

Um das Standard-Kopieren/Einfügen für TextView zu aktivieren, können Sie eine der folgenden Optionen auswählen:

  1. Änderung in der Layoutdatei: Fügen Sie die unten stehende Eigenschaft zu Ihrer TextView hinzu

    Android:textIsSelectable="true"

  2. Schreiben Sie in Ihrer Klasse Java diese Zeile, um sie programmgesteuert festzulegen. myTextView.setTextIsSelectable(true);

Wenn Sie lange auf die Textansicht drücken, wird die Aktionsleiste zum Kopieren/Einfügen angezeigt.

54
RamiReddy

Erfordert API 11 , Aktualisierter Code, vorherige Methode ist veraltet

Lösung für Theme Vollbild ohneActionBar

Erweitere TextView und füge folgenden Code im Konstruktor ein

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;
            }
        });
9
AZ_
  1. thema verwenden 

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

    oder

    @Android:style/Theme.WithActionBar
    
  2. setze TextView in XML

    Android:textIsSelectable="true"
    
  3. siehe result

3
Michael Mao

In xml textview fügen Sie diesen Code ein

Android:textIsSelectable="true"

Dann in Java-Datei,

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

Voraussetzung: Sie müssen den Text kopieren und einfügen, der sich in der Textansicht befindet.

OutCome: Mit textview habe ich einmal auf die textview geklickt. Es wird automatisch der Text kopiert, der sich in der Textansicht befindet.

Hinweis: Beim Importieren des Clipboardmanagers versuchen Sie es zu bevorzugen

Bitte ziehen Sie den Manager für die Zwischenablage vor

import Android.text.ClipboardManager; // prefer this 

versuchen Sie, den Zwischenablagen-Manager zu vermeiden

import Android.content.ClipboardManager; // Not this
0
Agilanbu

das ist besser:

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

Für ein EditText.... Im Manifest innerhalb der Aktivität verwenden Sie Android:windowSoftInputMode="adjustResize"

0
rajeesh