Android: agregar enlaces "internos" a parte de un TextView, que enlaza a la acción en mi código
Como explica el título, me gustaría agregar enlaces a miTextView
, con estas dos advertencias:
Quiero que el enlace actúe en una parte deTextView
, no el completo (algo así como unA
ancla en HTML).
Quiero que el enlace apunte a una acción en mi código, no a un sitio web. Podría definir un método en mi actividad o implementar unaOnClickListener
, y ejecutar eso cuando se hace clic en ese enlace específico.
Hasta ahora, logré convertir números de teléfono, direcciones, sitios web y correos electrónicos en enlaces externos dedicados usando:
Linkify.addLinks(message, Linkify.ALL);
Me gustaría algo similar para los enlaces internos (a mi método), con la posibilidad de definir los personalizados.
Además, usar una página web con un enlace interno y una vista web no es realmente una opción, ya que tengo varios diseños complejos definidos, y tener que modificar toda la aplicación y los conceptos sería bastante complicado ...
¿Alguna idea
EDITAR Kabuko me dio una muy buena solución, así es exactamente cómo lo implementé:
final TextView descriptionTextView = (TextView) findViewById(R.id.description);
final Spannable span = Spannable.Factory.getInstance().newSpannable("the full text for the view");
span.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
Toast.makeText(StartEventActivity.this, "LINK CLICKED", Toast.LENGTH_SHORT).show();
}
}, 1, 20, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); // 1 and 20 to be replaced with actual index of start and end of the desired link
descriptionTextView.setText(span);
descriptionTextView.setMovementMethod(LinkMovementMethod.getInstance());