TextViewHtmlテキストハイパーリンクイベントの処理
1586 ワード
TextViewはAndroidでテキストを表示するための一般的なコントロールです.
また、Htmlテキストの表示もサポートしています.setText()
ただし、Htmlテキストは表示のみではすべての要件を満たすことはできません.テキストにハイパーリンクがある場合は
textview.setText(“ ”);
また、Htmlテキストの表示もサポートしています.setText()
textview.setText(Html.fromHtml(""Html ));
ただし、Htmlテキストは表示のみではすべての要件を満たすことはできません.テキストにハイパーリンクがある場合は
/**
* html
* @param context
* @param tv
*/
public static void textHtmlClick(Context context, TextView tv) {
tv.setMovementMethod(LinkMovementMethod.getInstance());
CharSequence text = tv.getText();
if (text instanceof Spannable) {
int end = text.length();
Spannable sp = (Spannable) text;
URLSpan[] urls = sp.getSpans(0, end, URLSpan.class);
SpannableStringBuilder style = new SpannableStringBuilder(text);
style.clearSpans();// should clear old spans
for (URLSpan url : urls) {
MyURLSpan myURLSpan = new MyURLSpan(url.getURL(), context);
style.setSpan(myURLSpan, sp.getSpanStart(url),
sp.getSpanEnd(url), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
}
tv.setText(style);
}
}
private static class MyURLSpan extends ClickableSpan {
private String mUrl;
private Context mContext;
MyURLSpan(String url, Context context) {
mContext = context;
mUrl = url;
}
@Override
public void onClick(View widget) {
Toast.makeText(mContext," ",Toast.LENGTH_SHORT).show();
}
}