Android: adicione links "internos" a parte de um TextView, que vincula à ação no meu código
Como o título explica, eu gostaria de adicionar links aos meusTextView
, com estas duas advertências:
Eu quero que o link atue em uma parte doTextView
, não o completo (algo como umA
âncora em HTML).
Quero que o link aponte para uma ação no meu código, não em um site. Eu poderia definir um método em minha atividade ou implementar umOnClickListener
e execute-o quando esse link específico for clicad
té agora, consegui transformar números de telefone, endereços, sites e e-mails em links externos dedicados usando:
Linkify.addLinks(message, Linkify.ALL);
Gostaria de algo semelhante para links internos (para o meu método), com a possibilidade de definir links personalizado
Além disso, usar uma página da web com link interno e uma visualização da web não é realmente uma opção, pois eu já tenho vários layouts complexos definidos, e ter que modificar todo o aplicativo e conceitos seria uma grande dor ...
Qualquer ideia
EDITAR Kabuko me deu uma solução muito boa, aqui está exatamente como eu a implementei:
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());