获取TextView中的url并设置点击事件
2015-08-18 16:12
387 查看
调用安卓默认的浏览器方法:
Intent intent = new Intent(Intent.ACTION_VIEW);
System.out.println("跳转到百度");
intent.setData(Uri.parse("http://www.baidu.com"));
// intent.setPackage("com.mx.browser"); intent.setPackage("com.uc.browser"); 添加这一句是为了调用手机中的其他浏览器,前提是手机中安装了这些浏览器如遨游,uc等)
startActivity(intent);
如果获取textview中的url并设置点击事件,则按如下步骤:
1,textview的xml中添加 : android:autoLink="web" //或者all,根据需要
2,实现方法:(从网上摘抄)
private void setLinkClickable(final SpannableStringBuilder clickableHtmlBuilder,
final URLSpan urlSpan) {
int start = clickableHtmlBuilder.getSpanStart(urlSpan);
int end = clickableHtmlBuilder.getSpanEnd(urlSpan);
int flags = clickableHtmlBuilder.getSpanFlags(urlSpan);
ClickableSpan clickableSpan = new ClickableSpan() {
public void onClick(View view) { //在这里添加点击事件
//Do something with URL here.
Log.i("LOG", "onClick url=" + urlSpan.getURL() );
Intent intent = new Intent(Intent.ACTION_VIEW);
System.out.println("点击的url:"+urlSpan.getURL());
intent.setData(Uri.parse(urlSpan.getURL())); //使用默认浏览器打开url
// intent.setData(Uri.parse("www.baidu.com"));
// intent.setPackage("com.mx.browser");
startActivity(intent);
}
};
clickableHtmlBuilder.setSpan(clickableSpan, start, end, flags);
}
private CharSequence getClickableHtml(String html) {
Spanned spannedHtml = Html.fromHtml(html);
SpannableStringBuilder clickableHtmlBuilder = new SpannableStringBuilder(spannedHtml);
URLSpan[] urls = clickableHtmlBuilder.getSpans(0, spannedHtml.length(), URLSpan.class);
for(final URLSpan span : urls) {
setLinkClickable(clickableHtmlBuilder, span);
}
return clickableHtmlBuilder;
4,最后,使用方法:
TextView tv = (TextView) findViewById(R.id.tv);
String url = "<a href=\"http://www.baidu.com\">www.baidu.com</a>"
+ "The Next Link is <a href=\"http://www.hao123.com\">hao123</a>";
tv.setText(getClickableHtml(url));
tv.setMovementMethod(LinkMovementMethod.getInstance());
总结:以上方法是从网上摘抄,但都少了 :tv.setMovementMethod(LinkMovementMethod.getInstance());
从而导致不能触发点击事件。点击 new ClickableSpan() 可以看到,只有实现[b]LinkMovementMethod方法才能触发点击事件。[/b]
Intent intent = new Intent(Intent.ACTION_VIEW);
System.out.println("跳转到百度");
intent.setData(Uri.parse("http://www.baidu.com"));
// intent.setPackage("com.mx.browser"); intent.setPackage("com.uc.browser"); 添加这一句是为了调用手机中的其他浏览器,前提是手机中安装了这些浏览器如遨游,uc等)
startActivity(intent);
如果获取textview中的url并设置点击事件,则按如下步骤:
1,textview的xml中添加 : android:autoLink="web" //或者all,根据需要
2,实现方法:(从网上摘抄)
private void setLinkClickable(final SpannableStringBuilder clickableHtmlBuilder,
final URLSpan urlSpan) {
int start = clickableHtmlBuilder.getSpanStart(urlSpan);
int end = clickableHtmlBuilder.getSpanEnd(urlSpan);
int flags = clickableHtmlBuilder.getSpanFlags(urlSpan);
ClickableSpan clickableSpan = new ClickableSpan() {
public void onClick(View view) { //在这里添加点击事件
//Do something with URL here.
Log.i("LOG", "onClick url=" + urlSpan.getURL() );
Intent intent = new Intent(Intent.ACTION_VIEW);
System.out.println("点击的url:"+urlSpan.getURL());
intent.setData(Uri.parse(urlSpan.getURL())); //使用默认浏览器打开url
// intent.setData(Uri.parse("www.baidu.com"));
// intent.setPackage("com.mx.browser");
startActivity(intent);
}
};
clickableHtmlBuilder.setSpan(clickableSpan, start, end, flags);
}
private CharSequence getClickableHtml(String html) {
Spanned spannedHtml = Html.fromHtml(html);
SpannableStringBuilder clickableHtmlBuilder = new SpannableStringBuilder(spannedHtml);
URLSpan[] urls = clickableHtmlBuilder.getSpans(0, spannedHtml.length(), URLSpan.class);
for(final URLSpan span : urls) {
setLinkClickable(clickableHtmlBuilder, span);
}
return clickableHtmlBuilder;
4,最后,使用方法:
TextView tv = (TextView) findViewById(R.id.tv);
String url = "<a href=\"http://www.baidu.com\">www.baidu.com</a>"
+ "The Next Link is <a href=\"http://www.hao123.com\">hao123</a>";
tv.setText(getClickableHtml(url));
tv.setMovementMethod(LinkMovementMethod.getInstance());
总结:以上方法是从网上摘抄,但都少了 :tv.setMovementMethod(LinkMovementMethod.getInstance());
从而导致不能触发点击事件。点击 new ClickableSpan() 可以看到,只有实现[b]LinkMovementMethod方法才能触发点击事件。[/b]
相关文章推荐
- sql语句分组统计出年月日下数据记录数目
- Lambda表达式补充
- 42个自我提升的实用技巧
- TCP粘包的拆包处理
- C++ 子类继承父类 之 构造函数
- CAS 4.0 单点登录教程
- 页面中根据滚动条,显示返回顶部图标
- android 反编译
- Linux内核配置
- size_t
- administrator用户进程模拟当前登录用户进程执行系统API
- 3.1存储管理操作系统
- 微信打开网址添加在浏览器中打开提示
- WARNING: The following packages cannot be authenticated! foo bar baz Install these packages without verification [y/N]?
- 使用ShapeLib读写dbf数据
- Eclipse配置Maven
- Android 高仿优酷旋转菜单
- crosswalk工程建立及使用
- UITableViewCell drawRect画线在iOS7下不显示的问题
- 常用状态码