TextView – OnClick – Android

¿Es posible agregar onclick a alguna parte de un textview? Por ejemplo mi código va como esto,

String content = "Hello this a test.. For more details contact @Peter"; someTextView.setText(content); 

Me gustaría añadir un evento onClick para "@Peter". ¿Es eso posible?

TIA.

Sencillo: -)

 SpannableString link = makeLinkSpan("@Peter", new View.OnClickListener() { @Override public void onClick(View v) { // Peforme Click } }); String content = "Hello this a test.. For more details contact"; someTextView.setText(content); someTextView.append(link); 

Y el método makeLinkSpan() es

 private SpannableString makeLinkSpan(CharSequence text, View.OnClickListener listener) { SpannableString link = new SpannableString(text); link.setSpan(new ClickableString(listener), 0, text.length(), SpannableString.SPAN_INCLUSIVE_EXCLUSIVE); return link; } 

Clase ClickableString

 private static class ClickableString extends ClickableSpan { private View.OnClickListener mListener; public ClickableString(View.OnClickListener listener) { mListener = listener; } @Override public void onClick(View v) { mListener.onClick(v); } } 

En tu Xml agrega esto, android:clickable="true"

En el uso de la actividad como este,

 textView.setOnClickListener(new View.OnClickListener(){ public void onClick(){ } } 

Gracias a @ user370305 por la respuesta .. Sin embargo, se perdió algún fragmento de código en su respuesta .. Para el beneficio de los demás, estoy pegando el código completo que trabajó para mí,

 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView someTextView = (TextView)findViewById(R.id.someTextView); String content = "Hello this a test.. For more details contact"; someTextView.setText(content); SpannableString link = makeLinkSpan("@Peter", new View.OnClickListener() { @Override public void onClick(View v) { //Do something here.. } }); someTextView.append(link); } makeLinksFocusable(someTextView); } private void makeLinksFocusable(TextView tv) { MovementMethod m = tv.getMovementMethod(); if ((m == null) || !(m instanceof LinkMovementMethod)) { if (tv.getLinksClickable()) { tv.setMovementMethod(LinkMovementMethod.getInstance()); } } } private SpannableString makeLinkSpan(CharSequence text, View.OnClickListener listener) { SpannableString link = new SpannableString(text); link.setSpan(new ClickableString(listener), 0, text.length(), SpannableString.SPAN_INCLUSIVE_EXCLUSIVE); return link; } private static class ClickableString extends ClickableSpan { private View.OnClickListener mListener; public ClickableString(View.OnClickListener listener) { mListener = listener; } @Override public void onClick(View v) { mListener.onClick(v); } } 

Esto es posible con el uso del código Java:

 someTextView.setOnClickListener(new View.OnClickListener(){ public void onClick(){ //Do Stuff } }); 

Pero primero asegúrese de que se puede hacer clic.

 someTextView.setClickable(true); 

Prueba esto:

 SpannableString str = new SpannableString("@Peter"); str.setSpan(new ClickableSpan() { @Override public void onClick(View widget) { // TODO Auto-generated method stub } }, 0, str.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE); 

A continuación, agregue str a su TextView.

También es necesario llamar a setMovementMethod(LinkMovementMethod.getInstance()); En su TextView

  • Android.content.ActivityNotFoundException cuando el enlace no contiene http
  • TextView con color de fondo sólo en el propio texto
  • Android textview - no puedo conseguir que va
  • Palabra que se puede hacer clic en TextView en android
  • ¿Cómo puedo colocar dos TextView en una misma línea, en un diseño vertical
  • ¿Cómo puedo crear una vista de texto que cambie automáticamente su tamaño de fuente para que se ajuste al espacio?
  • Recortar TextView en el centro, reservando caracteres finales
  • ¿Cómo actualizar un TextView en una actividad de un servicio en Android?
  • Cómo colocar textview con x, y posición
  • En un Android TextView, ¿es posible insertar párrafos?
  • Obtener el texto visible actual en la vista de texto
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.