hier beantwortet Make parts of textview clickable (not url) Ich habe gerade eine Modifikation, wenn Sie es mit einer HTML-Nachricht verwenden möchten, gehen Sie wie folgt In Ihrer Anzeigefunktion
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);
}
Der modifizierte Funktion von 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;
}
Hoffe, dass das jemandem hilft.
Das ist * super *. Eine Sache jedoch, wenn ich den String mit getString abgerufen habe, hat es nicht funktioniert :(. Ich habe gerade den String im Code für den Moment festgeschrieben. Yay. Auch wenn Sie die Linkfarbe auf weiß setzen wollen: textView.setLinkTextColor (android .R.color.white); – tomwilson
Hi Kabal, es funktioniert definitiv unabhängig davon, ob getString() oder getText() verwendet wird.Mit Html.fromSource (String) wird ein spannbares HTML-Markup erstellt, das in Spannen für Androids umgewandelt wird Text-Renderer zu handhaben Pop-up eine Folge-Frage, wenn es ein bestimmtes Problem, mit dem Sie denken, dass Sie damit zu tun haben. –
Hallo, es ist super! Wie kann ich die Zeichenfolge geklickt? Ich habe mehr als String per TextView anklickbar (unterstrichen)? help? – Angie