risposta qui Make parts of textview clickable (not url) Ho appena fatto una modifica, se si desidera utilizzare con un messaggio HTML effettuare le seguenti operazioni Nella funzione di visualizzazione
public void displayText(String message) {
chapterTextView.setText(Html.fromHtml(message),TextView.BufferType.SPANNABLE);
chapterTextView.setMovementMethod(LinkMovementMethod.getInstance());
Spannable clickableMessage = (Spannable) chapterTextView.getText();
chapterTextView.setText(addClickablePart(clickableMessage), BufferType.SPANNABLE);
}
La funzione modificata del addClickablePart
private SpannableStringBuilder addClickablePart(Spannable charSequence) {
SpannableStringBuilder ssb = new SpannableStringBuilder(charSequence);
int idx1 = charSequence.toString().indexOf("(");
int idx2 = 0;
while (idx1 != -1) {
idx2 = charSequence.toString().indexOf(")", idx1) + 1;
final String clickString = charSequence.toString().substring(idx1, idx2);
ssb.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
Toast.makeText(getActivity(), clickString,
Toast.LENGTH_SHORT).show();
}
}, idx1, idx2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
idx1 = charSequence.toString().indexOf("(", idx2);
}
return ssb;
}
Spero che questo aiuti qualcuno.
fonte
2014-08-04 23:21:27
Questo è * fantastico *. Una cosa però, se ho recuperato la stringa usando getString, non ha funzionato :(. Ho solo hardcoded la stringa nel codice per ora .. yay. Inoltre, se si desidera impostare il colore del collegamento al bianco: textView.setLinkTextColor (android .R.color.white); – tomwilson
Ciao Kabal, sicuramente funziona indipendentemente dall'uso di getString() o getText(). Usando Html.fromSource (String) creerà un oggetto espandibile con il markup html trasformato in span per Android rendering di testo da gestire. Fai una domanda di follow-up se c'è un problema specifico che pensi di avere a che fare. –
ciao è fantastico! come posso ottenere la stringa cliccata? ho più di una stringa cliccabile (sottolineata) da textView? qualsiasi aiuto? – Angie