textView.setMovementMethod(WebLinkMethod.getInstance(mContext, title)); //代码
android:autoLink="all" // XML
public class WebLinkMethod extends LinkMovementMethod {
private static WebLinkMethod instance;
private Context context;
private String title;
private WebLinkMethod(Context context) {
this.context = context;
}
private WebLinkMethod(Context context, String title) {
this.context = context;
this.title = title;
}
public static MovementMethod getInstance(Context context) {
if (instance == null)
instance = new WebLinkMethod(context);
return instance;
}
public static MovementMethod getInstance(Context context, String title) {
if (instance == null)
instance = new WebLinkMethod(context, title);
return instance;
}
@Override
public boolean onTouchEvent(TextView widget, Spannable buffer, MotionEvent event) {
int action = event.getAction();
if (action == MotionEvent.ACTION_UP ||
action == MotionEvent.ACTION_DOWN) {
int x = (int) event.getX();
int y = (int) event.getY();
x -= widget.getTotalPaddingLeft();
y -= widget.getTotalPaddingTop();
x += widget.getScrollX();
y += widget.getScrollY();
Layout layout = widget.getLayout();
int line = layout.getLineForVertical(y);
int off = layout.getOffsetForHorizontal(line, x);
// ClickableSpan[] link = buffer.getSpans(off, off, ClickableSpan.class);
URLSpan[] link = buffer.getSpans(off, off, URLSpan.class);
if (link.length != 0) {
if (action == MotionEvent.ACTION_UP) {
// link[0].onClick(widget);
Intent intent = new Intent(context, WebActivity.class);
intent.putExtra("url", link[0].getURL());
intent.putExtra("title", title);
context.startActivity(intent);
} else if (action == MotionEvent.ACTION_DOWN) {
Selection.setSelection(buffer,
buffer.getSpanStart(link[0]),
buffer.getSpanEnd(link[0]));
}
return true;
} else {
Selection.removeSelection(buffer);
}
}
return super.onTouchEvent(widget, buffer, event);
}
}
Android 打开TextView中的超链接
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 下午产品经理提了个需求:要在服务端传来的文本中用应用内置浏览器打开超链接。去网上搜了下,找到了个方法: 很...
- 【法1】 /** * 处理html文本超链接点击事件 * @param context * @param tv *...
- 先来一张图 布局代码 android:autoLink="all" 也是没问题的下面是工具类代码 直接拿去用就行...