获取TextView中的url并设置点击事件

调用安卓默认的浏览器方法:

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() 可以看到,只有实现LinkMovementMethod方法才能触发点击事件。

时间: 2024-10-03 03:55:52

获取TextView中的url并设置点击事件的相关文章

android textview 中部分内容 颜色 样式 点击事件的设置

// 文本内容 SpannableString ss = new SpannableString(remindtitle); int stringlength = ss.length(); // 设置0-2的字符颜色 ss.setSpan(new ForegroundColorSpan(Color.RED), 0, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 设置2-5的字符链接到电话簿,点击时触发拨号 ss.setSpan(new URLSpan("tel

设置TextView中的部分位置可以点击,颜色不同

String url="注册宝驾会员代表您已同意<我们服务条款>,请认真阅读."; SpannableStringBuilder style = new SpannableStringBuilder(url); TextViewURLSpan myURLSpan = new TextViewURLSpan(); style.setSpan(myURLSpan,12,20, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); tv_service.setTe

ListView滑动监听和设置点击事件

viewholder_item.xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="match_pa

jQuery中animate动画第二次点击事件没反应

jQuery中animate动画第二次点击事件没反应 用animate做点击翻页动画时发现第二次点击事件动画没反应,而第一次点击有动画效果,代码如下: 复制代码 代码如下: $(".page").stop().animate({top:“-300px”}, 800, 'easeInOutExpo'); 第二次点击事件动画没反应的原因:top是page元素顶部相与其父元素顶部的距离,第一次点击后,page元素顶部已经移动到距其父元素顶部 -300px的位置,第二次点击时的并不是page在

CSS-07 行内设置点击事件

在标签行内设置点击事件: <a href="#" onclick="obj.search()">查询</a> js代码: obj = { search : function(){ alert(123); } }; 原文地址:https://www.cnblogs.com/Helen-code/p/12151627.html

自定义的TextView,使部分内容拥有点击事件,并在点击内容上方出现对应的词义等信息

直接看效果图: 上面图中是一个TextView,注册部分内容(KeyWord)是其拥有点击事件,并通过计算KeyWord的坐标,显示KeyWord的想要的一些信息 /** * 一个TextView中包含一个可以点击的KeyWord(关键词),并通过点击关键词,在对应关键词位置正上方展示关键词对应的解释等逻辑 * @author DuGuang * */ public class MainActivity extends Activity { private KeyWordTextView mTv

gridview中单元格button的点击事件和onitemclick点击冲突及解决办法

如果是listview的onitemclick的点击事件与子button的点击事件冲突,很多人都知道通过对listview设置android:descendantFocusability="blocksDescendants",以及对button设置android:focus="false",来屏蔽button的焦点以及点击事件从而解决冲突.然而不幸的是,本人今天对类似的gridview设置此项属性,亲测并没有什么用. 解决办法是有的,例如把button改为text

Android EditText中插入图片并响应点击事件

EditText中插入图片基本就是两种方法: 1,通过Html.fromHtml(..)来实现 [mw_shl_code=java,true]eText.append(Html.fromHtml("<img src='" + R.drawable.ohoh + "'/>", imageGetter, null));[/mw_shl_code] 2,通过ImageSpan与SpannableString/SpannableStringBuilder. [m

iOS 为移动中的UIView(UIButton )添加点击事件

高高兴兴迎接新的产品新需求,满心欢喜的开始工作,结果研究了一下午才发现,是自己想的太简单了,是我太单纯呀. 需求是这样的类似下雪的效果,随机产生一些小雪花,然后每个雪花可以点击到下个页面. 接到需求之后我的首先想法就是用button实现不久可以了,多简单点事情,结果实践之后就知道自己多么的无知了,在移动中的button根本没有办法接收点击事件. 然后同事给出了一种解决办法,通过手势获取点击的位置,然后遍历页面上的控件,如果在这个范围内就点击成功.通过这个想法我尝试用frame来实现需求,然后发现