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.
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();
}
});
Versuchen Sie Android:textIsSelectable
.
d.h. Android:textIsSelectable="true"
Um das Standard-Kopieren/Einfügen für TextView zu aktivieren, können Sie eine der folgenden Optionen auswählen:
Änderung in der Layoutdatei: Fügen Sie die unten stehende Eigenschaft zu Ihrer TextView hinzu
Android:textIsSelectable="true"
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.
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;
}
});
thema verwenden
@Android:style/Theme.Black.NoTitleBar.Fullscreen
oder
@Android:style/Theme.WithActionBar
setze TextView in XML
Android:textIsSelectable="true"
siehe result
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
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");
}
Für ein EditText
.... Im Manifest innerhalb der Aktivität verwenden Sie Android:windowSoftInputMode="adjustResize"