Seleccionar + copiar texto en un TextView?

¿Hay alguna manera de permitir al usuario seleccionar / copiar texto en un TextView? Necesito la misma funcionalidad de EditText, donde puede presionar 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 EditText use la opción editable = “none” o inputType = “none”, pero aún conservan el fondo enmarcado de EditText, que no quiero.

Gracias

——- Actualización ———————-

Esto es 99% allí, todo lo que quiero es que el hilight de selección sea visible (el material naranja). Aparte de eso, es bueno, podría vivir con esto sin embargo:

 

Supongo que se está causando debido a cursorVisible = “false”, pero sin eso el cursor está presente incluso sin realizar ninguna selección.

android: textIsSelectable works (al menos en ICS: aún no he registrado versiones anteriores)

  

La vista de texto debe estar activada, enfocable, longClickable y textIsSelectable

   

Creo que tengo una mejor solución. Solo llama
registerForContextMenu(yourTextView);

y su TextView se registrará para recibir eventos del menú contextual.

A continuación, anula onCreateContextMenu en tu Activity

 @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { //user has long pressed your TextView menu.add(0, v.getId(), 0, "text that you want to show in the context menu - I use simply Copy"); //cast the received View to TextView so that you can get its text TextView yourTextView = (TextView) v; //place your TextView's text in clipboard ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); clipboard.setText(yourTextView.getText()); } 

Espero que esto lo ayude a usted y a cualquier otra persona que busque una forma de copiar texto desde una TextView texto

Estoy tratando de implementar lo mismo, y tu pregunta me ayudó a establecer mi diseño de texto correctamente. ¡Así que gracias! 🙂

Entonces me di cuenta de que el realce realmente será visible si el cursor está encendido. Pero simplemente me gusta que no desee 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 eventlistener 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:

 public TextView htmltextview; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ... htmltextview.setOnLongClickListener(new OnLongClickListener(){ public boolean onLongClick(View v) { htmltextview.setCursorVisible(true); return false; } }); } 

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

 textview1.setTextIsSelectable(true); 

Esto permitirá al usuario seleccionar y copiar texto con un clic prolongado o como hacemos comúnmente

También estaba tratando de hacer algo similar, pero aún necesitaba un enfoque personalizado con la manipulación del resaltado de texto en TextView. LongClick resaltar y copiar en la acción LongClick .

Así es como logré usar SpannableString :

 SpannableString highlightString = new SpannableString(textView.getText()); highlightString.setSpan(new BackgroundColorSpan(ContextCompat.getColor(getActivity(), R.color.gray)) , 0, textView.getText().length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); textView.setText(highlightString); copyToClipboard(urlToShare); 

y la función de copia:

 public void copyToClipboard(String copyText) { ClipboardManager clipboard = (ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE); ClipData clip = ClipData.newPlainText("url", copyText); clipboard.setPrimaryClip(clip); Toast toast = Toast.makeText(getActivity(), "Link is copied", Toast.LENGTH_SHORT); toast.show(); } 

Espero que sea útil para alguien que termina con esta pregunta 🙂

Solo use esta biblioteca simple: GitHub: TextView seleccionable