tu odpowiedzi Make parts of textview clickable (not url) Zrobiłem modyfikację jeśli chcesz używać go z wiadomości HTML wykonaj następujące czynności W funkcji reklamowej
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);
}
Zmodyfikowana funkcja 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;
}
Mam nadzieję, że to pomoże komuś.
To jest * niesamowite *. Jedna rzecz jednak, gdybym przyniósł ciąg za pomocą getString to nie działało :(po prostu na stałe zakodowałem ciąg w kodzie na teraz .. yay. Także jeśli chcesz ustawić kolor łącza na biały: textView.setLinkTextColor (android .R.color.white); – tomwilson
Cześć Kabal, to zdecydowanie działa bez względu na użycie getString() lub getText(). Używając Html.fromSource (String) stworzy spannable z html mark up zamieniony w przęsła dla androida Rendering tekstowy do obsługi. Pop-up pytanie uzupełniające, jeśli istnieje konkretny problem, który uważasz, że możesz mieć do czynienia. –
hello to niesamowite !, w jaki sposób mogę uzyskać ciąg kliknięty? Mam więcej niż ciąg klikalny (podkreślony) przez textView? jakiejkolwiek pomocy? – Angie