Existe-t-il un moyen de permettre à l'utilisateur de sélectionner / copier du texte dans un TextView? J'ai besoin de la même fonctionnalité de EditText où vous pouvez appuyer longuement sur le contrôle et obtenir les options contextuelles de sélectionner tout / copier, mais j'ai besoin que le contrôle ressemble à un TextView.
J'ai essayé quelques choses comme faire un EditText, utilisez l'option editable = "none" ou inputType = "none", mais celles-ci conservent toujours l'arrière-plan encadré d'un EditText, ce que je ne veux pas,
Merci
------- Mettre à jour ----------------------
C'est 99% là-bas, tout ce que je voudrais, c'est que la sélection hilight soit visible (le truc orange). A part ça, c'est bien, mais ça pourrait vivre avec ça:
<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" />
Je suppose que cela est dû à cursorVisible = "false" mais sans cela, le curseur est présent même sans aucune sélection.
Réponses:
android: textIsSelectable fonctionne (au moins dans ICS - je n'ai pas encore vérifié dans les versions antérieures)
la source
La vue texte doit être activée, mise au point, longue cliquable et textIsSelectable
la source
textIsSelectable
ne suffit-il pas? cela fonctionne pour moi avec seulement cette optiontextview.setTextIsSelectable(true)
dans le code java code.textIsSelectableis
faire le travail pour moitextIsSelectable
fonctionne pour certains cas, mais pas pour d'autres. Parfois, la même mise en page ne fonctionne pas toujours avec uniquement textIsSelectable mais un texte différent. Cependant, cette solution ne semble pas améliorer son fonctionnement, de sorte que le problème peut venir d'ailleurs.Je pense que j'ai une meilleure solution. Il suffit d'appeler
registerForContextMenu(yourTextView);
et votre
TextView
sera enregistré pour recevoir les événements du menu contextuel.Puis remplacez
onCreateContextMenu
votreActivity
J'espère que cela vous aidera, vous et toute autre personne, à rechercher un moyen de copier du texte à partir d'un
TextView
la source
ClipboardManager.setText(CharSequence text)
est obsolète au niveau 11 de l'APIsetPrimaryClip(ClipData)
. Cela crée un ClippedItem contenant le texte donné et le définit comme clip principal. Il n'a ni étiquette ni icône. Bonne lecture sur le copier-coller: lienCela permettra à l'utilisateur de sélectionner et de copier du texte en cliquant longuement ou comme nous le faisons habituellement
la source
J'essaie de mettre en œuvre la même chose, et votre question m'a aidé à définir correctement ma mise en page editext. Donc merci! :)
Ensuite, j'ai réalisé que le surlignage sera effectivement visible si le curseur est allumé. Mais j'aime juste que vous ne vouliez pas voir un curseur avant de cliquer longtemps sur le texte, donc je cache le curseur dans le fichier layout.xml comme vous, et j'ai ajouté un eventlistener pour un clic long et n'affiche le curseur que lorsqu'une sélection commence .
Ajoutez donc l'auditeur dans votre activité dans la section onCreate:
Et voilá, pas de curseur au début, et si vous cliquez longuement, le curseur apparaît avec les limites de sélection.
J'espère que je pourrais aider.
Salutations, fm
la source
J'essayais également de faire quelque chose de similaire mais j'avais toujours besoin d'une approche personnalisée avec la manipulation de la mise en évidence du texte dans TextView. J'ai déclenché la mise en évidence et la copie sur l'
LongClick
action.C'est ainsi que j'ai réussi à utiliser
SpannableString
:et la fonction de copie:
J'espère que c'est utile pour quelqu'un qui se retrouve sur cette question :)
la source
Utilisation de Kotlin par programmation (copie manuelle)
Ou, ajoutez une extension de propriété Kotlin
Puis appelez
Utilisation de Kotlin par programmation (copie automatique)
Si vous souhaitez copier automatiquement lorsque l'utilisateur appuie longuement sur vous, voici le code de base requis:
Vous voudrez peut-être ajouter un
Toast
pour confirmer que cela s'est produitOu ajoutez une fonction d'extension Kotlin
Utilisation de Xml (copie manuelle)
Ajoutez ceci à votre
<TextView>
la source
Utilisez simplement cette bibliothèque simple: GitHub: Selectable TextView
la source