Gibt es eine Möglichkeit, dem Benutzer das Auswählen / Kopieren von Text in einer Textansicht zu ermöglichen? Ich benötige die gleiche Funktionalität von EditText, mit der Sie das Steuerelement lange drücken und die Popup-Optionen zum Auswählen aller / Kopieren abrufen können. Das Steuerelement muss jedoch wie eine Textansicht aussehen.
Versuchte ein paar Dinge wie das Erstellen eines EditText mit der Option editable = "none" oder inputType = "none", aber diese behalten immer noch den gerahmten Hintergrund eines EditText bei, den ich nicht möchte.
Vielen Dank
------- Update ----------------------
Dies ist zu 99% da. Ich möchte nur, dass die Auswahlhöhe sichtbar ist (das orangefarbene Zeug). Davon abgesehen ist es gut, könnte aber damit leben:
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:editable="false"
style="?android:attr/textViewStyle"
android:textColor="@color/white"
android:textAppearance="@android:style/TextAppearance.Medium"
android:cursorVisible="false"
android:background="@null" />
Ich denke, es wird durch cursorVisible = "false" verursacht, aber ohne das ist der Cursor auch ohne Auswahl vorhanden.
Antworten:
android: textIsSelectable funktioniert (zumindest in ICS - ich habe in früheren Versionen noch nicht eingecheckt)
quelle
Die Textansicht muss aktiviert, fokussierbar, longClickable und textIsSelectable sein
quelle
textIsSelectable
ist nicht genug? es funktioniert für mich nur mit dieser Optiontextview.setTextIsSelectable(true)
im Code Java-Code verwenden.textIsSelectableis
machen den Job für michtextIsSelectable
funktioniert irgendwie für einige Fälle, aber nicht für andere. Manchmal funktioniert dasselbe Layout nicht immer nur mit textIsSelectable, sondern mit einem anderen Text. Diese Lösung scheint jedoch nicht besser zu funktionieren, sodass das Problem möglicherweise von einem anderen Ort stammt.Ich denke, ich habe eine bessere Lösung. Ruf einfach an
registerForContextMenu(yourTextView);
und Sie
TextView
werden für den Empfang von Kontextmenüereignissen registriert.Dann überschreiben Sie
onCreateContextMenu
in IhremActivity
Ich hoffe, dies hilft Ihnen und allen anderen, die nach einer Möglichkeit suchen, Text von einem zu kopieren
TextView
quelle
ClipboardManager.setText(CharSequence text)
wurde in API-Level 11 veraltet. Verwenden SiesetPrimaryClip(ClipData)
stattdessen. Dadurch wird ein ClippedItem erstellt, das den angegebenen Text enthält, und als primärer Clip festgelegt. Es hat keine Beschriftung oder Symbol. Gute Lektüre über Copy-Paste: LinkAuf diese Weise kann der Benutzer Text bei langem Klicken oder wie gewohnt auswählen und kopieren
quelle
Ich versuche, dasselbe zu implementieren, und Ihre Frage hat mir geholfen, mein Editext-Layout richtig einzustellen. So danke! :) :)
Dann wurde mir klar, dass die Hervorhebung tatsächlich sichtbar ist, wenn der Cursor eingeschaltet ist. Aber ich mag es einfach, dass Sie keinen Cursor sehen möchten, bevor Sie lange auf den Text klicken. Deshalb verstecke ich den Cursor genau wie Sie in der Datei layout.xml und füge einen Ereignislistener für lange Klicks hinzu und zeige den Cursor erst an, wenn eine Auswahl beginnt .
Fügen Sie also den Listener in Ihrer Aktivität im Abschnitt onCreate hinzu:
Und voilá, kein Cursor am Anfang, und wenn Sie lange klicken, erscheint der Cursor mit den Auswahlgrenzen.
Ich hoffe ich konnte helfen.
Prost, fm
quelle
Ich habe auch versucht, etwas Ähnliches zu tun, brauchte aber immer noch einen benutzerdefinierten Ansatz mit der Manipulation der Hervorhebung von Text in TextView. Ich habe Highlight ausgelöst und weiter kopiert
LongClick
Aktion .So habe ich es geschafft mit
SpannableString
:und die Kopierfunktion:
Ich hoffe, es ist hilfreich für jemanden, der diese Frage beantwortet :)
quelle
Programmgesteuertes Verwenden von Kotlin (manuelle Kopie)
Oder fügen Sie eine Kotlin-Eigenschaftserweiterung hinzu
Dann ruf an
Programmgesteuertes Verwenden von Kotlin (Auto-Copy)
Wenn Sie automatisch kopieren möchten, wenn der Benutzer lange drückt, ist dies der erforderliche Basiscode:
Möglicherweise möchten Sie eine hinzufügen
Toast
zu bestätigen, dass dies geschehen istOder fügen Sie eine Kotlin-Erweiterungsfunktion hinzu
Verwenden von XML (manuelle Kopie)
Fügen Sie dies Ihrem hinzu
<TextView>
quelle
Verwenden Sie einfach diese einfache Bibliothek: GitHub: Auswählbare Textansicht
quelle