¿Hay alguna forma de permitir que el usuario seleccione / copie texto en un TextView? Necesito la misma funcionalidad de EditText donde puede mantener presionado el control y obtener las opciones emergentes de seleccionar todo / copiar, pero necesito que el control se vea como un TextView.
Intenté algunas cosas, como hacer que un EditText use la opción editable = "none" o inputType = "none", pero aún conservan el fondo enmarcado de un EditText, que no quiero,
Gracias
------- Actualización ----------------------
Esto es 99% allí, todo lo que quisiera es que el crepúsculo de selección sea visible (la cosa naranja). Aparte de eso, es bueno, podría vivir con esto:
<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" />
Supongo que se debe a cursorVisible = "false" pero sin eso, el cursor está presente incluso sin que se haya realizado ninguna selección.
Respuestas:
android: textIsSelectable funciona (al menos en ICS, aún no he verificado versiones anteriores)
fuente
La vista de texto debe estar habilitada, enfocable, con un clic largo y textIsSelectable
fuente
textIsSelectable
no es suficiente? funciona para mí solo con esta opcióntextview.setTextIsSelectable(true)
en el código java code.textIsSelectableis
haz el trabajo por mítextIsSelectable
funciona para algunos casos, pero no para otros. A veces, el mismo diseño no siempre funciona solo con textIsSelectable sino con un texto diferente. Sin embargo, esta solución no parece hacer que funcione mejor, por lo que el problema podría provenir de otra parte.Creo que tengo una mejor solución. Solo llama
registerForContextMenu(yourTextView);
y tu
TextView
estará registrado para recibir eventos del menú contextual.Luego anule
onCreateContextMenu
en suActivity
Espero que esto le ayude a usted y a cualquier otra persona que busque una forma de copiar texto de un
TextView
fuente
ClipboardManager.setText(CharSequence text)
quedó obsoleto en el nivel de API 11. Use en susetPrimaryClip(ClipData)
lugar. Esto crea un ClippedItem que contiene el texto dado y lo establece como el clip principal. No tiene etiqueta ni icono. Buena lectura sobre copiar y pegar: enlaceEsto permitirá al usuario seleccionar y copiar texto con un clic prolongado o como hacemos habitualmente.
fuente
Estoy tratando de implementar lo mismo, y su pregunta me ayudó a configurar correctamente el diseño de mi texto de edición. ¡Así que gracias! :)
Entonces me di cuenta de que el resaltado será visible si el cursor está encendido. Pero me gusta que no quiera ver un cursor antes de hacer clic en el texto, por lo que oculto el cursor en el archivo layout.xml como usted, y agregué un detector de eventos para hacer clic largo y mostrar el cursor solo cuando comienza una selección .
Así que agrega el oyente en tu Actividad en la sección onCreate:
Y voilá, no hay cursor al principio, y si hace clic largo, el cursor aparece con los límites de selección.
Espero poder ayudar.
Saludos, fm
fuente
También estaba tratando de hacer algo similar, pero aún necesitaba un enfoque personalizado con la manipulación del resaltado del texto en TextView. Activé el resaltado y la copia en
LongClick
acción.Así es como me las arreglé usando
SpannableString
:y la función de copia:
Espero que sea útil para alguien que termine con esta pregunta :)
fuente
Uso de Kotlin mediante programación (copia manual)
O agregue una extensión de propiedad de Kotlin
Luego llame
Uso de Kotlin mediante programación (copia automática)
Si desea realizar una copia automática cuando el usuario presiona prolongadamente la vista, este es el código base requerido:
Es posible que desee agregar un
Toast
para confirmar que sucedióO agregue una función de extensión de Kotlin
Uso de XML (copia manual)
Agrega esto a tu
<TextView>
fuente
Simplemente use esta biblioteca simple: GitHub: TextView seleccionable
fuente