Android实现TextView中部分文字监听事件

通常我们只需要用TextView来显示文本信息,展示给用户看,而把点击相应的监听事件交给Button等控件来处理,当然TextView也可以实现点击事件。有时候我们要对TextView中的部分文字进行点击,我们应该如何操作呢?一般有以下三种方式:

1,在布局文件中设置TextView的android:autoLink属性,比如设置android:autoLink=“phone”,则可以点击手机号码直接拨打电话。android:autoLink设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。可选值(none/web/email/phone/map/all)
等。这个最简单,但实现的目标也比较单一,比如只可以打电话或发邮件等。

2,用Html格式中的href链,比如:

String content= "<font color=#ff0000> 点击对应文字可以跳转网页面" + "</font><a href=‘http://www.baidu.com‘>百度</a>" ;

TextView linkTextView= (TextView) findViewById(R.id.linkTextView);

textView.setText(Html.fromHtml(content));

点击上面的百度二字就可以直接 跳转到百度网页。这种方式一般只能跳转到网页面面。

3,当我们想实现点击部分文字跳转到指定的页面或是实现特定的效果(比如弹出提示对话框,Toast信息等)我们可以使用SpannableString来实现:

TextView textView=(TextView)findViewById(R.id.tv);

SpannableString spanStr = new SpannableString(textView.getText().toString());

NoUnderlineSpan mNoUnderlineSpan = new NoUnderlineSpan();//这句话的目的是去除特殊文字下划线效果

spanStr.setSpan(new ForegroundColorSpan(Color.parseColor("#00b5f0")), s.length() - 7, s.length(), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);//设置部分文字文字颜色,这里的文字长度肯定大于7才行

s.setSpan(new ClickableSpan() {

@Override

public void onClick(View widget) {

//这里就是点击事件,实现自己想要的效果

}

}, spanStr.length() - 7, s.length(), Spanned.SPAN_MARK_MARK);

spanStr.setSpan(mNoUnderlineSpan, spanStr.length() - 7, spanStr.length(), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);

textView.setText(spanStr);

textView.setMovementMethod(LinkMovementMethod.getInstance());

实现清除文字下划线:

public class NoUnderlineSpan extends UnderlineSpan {

@Override

public void updateDrawState(TextPaint ds) {

ds.setColor(ds.linkColor);

ds.setUnderlineText(false);

}

}

当然还有其它的方法啦!

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-12 19:57:36

Android实现TextView中部分文字监听事件的相关文章

[android篇]textview中片段响应点击事件(SpannableString)

项目需求 点击textView中的一小段文字,弹一个dialog框 失败解决方案 刚开始是用了两个textView水平布局,可想而知,当第一个textView快占满一行,还未换行时,第二个textView很可能出现换行排版问题 用spannableString的问题 小段文字有下划线 点击textView中的小段文字时,系统会当做url处理,给点击部分的text加一个蓝色的背景 解决方案 public class TouchableSpan extends ClickableSpan { pri

关于 Android ios cocos2d 中的广播监听

1. 关于广播监听 第一次使用是在Android中,broadcast.主要用在2个activity之间进行传递数据,发出一个广播,对这个广播有兴趣的就去监听它,做出相应的回应即可.主要是传递数据,触发机制比较好,跟全局变量或者单例有点像,但是使用场合有区别,比如2个activity之间传递数据,activity这种有生命周期的弄成全局变量和单例就不合适了. 2.Android的广播 发送广播: Intent intent = new Intent("OUR_BLE_CENTRAL_MANAGE

钉钉中添加回调监听事件

此类是HttpRequest.java------------------------------------------------------------------------------------------------------------------------------------------------------------------------/** * get请求 * @param url 为接口地址参数 * @return */ public static JSO

【Android】NavigationView头部点击监听事件

AndroidStudio给出的模板里面只有列表点击事件,即实现OnNavigationItemSelectedListener中的onNavigationItemSelected方法,根据item的id判断是点击哪个item.但是,模板没有给出头部的点击事件. 方法是动态添加head,具体代码如下: //NavigationView头部点击事件绑定 View drawview = navigationView.inflateHeaderView(R.layout.nav_header_main

关于AngularJs中监听事件及脏循环的理解

可能很多刚入行或者刚学习的前端对于AngularJs中的一些事件或者概念感觉不理解或者没有思路,今天让我们一起来剖析一下AngularJs中的一些事件. AngularJs中对于的监听事件会用到一个scope函数$watch,它包含了三个参数,首先我们在概念上来了解一下: $watch是一个scope函数,用于监听模型变化,当你的模型部分发生变化时它会通知你. $watch(watchExpression, listener, objectEquality); 每个参数的说明如下: watchE

ExtJS 下拉框监听事件、日期选择器监听事件、实现动态给items添加删除数据

1.下拉框 下拉框选择时,触发事件的方法: 在 Ext.form.ComboBox 组件中新增 listeners 监听事件 基本写法为:  listeners{'事件',function(){处理方法}} listeners:{ select:{ fn:function(combo,record,index) { } } }   2.日期选择器 选择日期时,值发生变化,并且在失去焦点之前触发此事件,也就是说如果此日期组件的值发生变化,而焦点并没有失去,这个事件也就不会触发.解决方法: menu

Android中Preference的使用以及监听事件分析

> 在Android系统源码中,绝大多数应用程序的UI布局采用了Preference的布局结构,而不是我们平时在模拟器中构建应用程序时使用的View布局结构,例如,Setting模块中布局.当然,凡事都有例外,FMRadio应用程序中则使用了View布局结构(可能是该应用程序是marvel公司提供的,如果由google公司做,那可说不准).归根到底,Preference布局结构和View的布局结构本质上还是大同小异,Preference的优点在于布局界面的可控性和高效率以及可存储值的简洁性(每个

Android中检查、监听电量和充电状态的方法

Android中检查.监听电量和充电状态的方法 这篇文章主要介绍了Android中检查.监听电量和充电状态的方法,如判断当前充电状态.监听充电状态的改变.判断当前剩余电量等,需要的朋友可以参考下 当你在更改后台更新频率来减少这些更新对电池寿命的影响时,检查当前电量和充电状态是一个好的开始. 电池寿命通过剩余电量和充电状态来影响应用更新的执行.当用交流电充电时,执行更新操作对设备的影响是微不足道的,所以在大多数案例里,你可以把更新频率调到最快.如果设备不在充电,降低更新频率可以帮助延长电池寿命.

Android中Button的五种监听事件

简单聊一下Android中Button的五种监听事件: 1.在布局文件中为button添加onClick属性,Activity实现其方法2.匿名内部类作为事件监听器类3.内部类作为监听器4.Activity本身作为事件监听器,实现onClickListener5.外部类作为监听器 ButtonListenerActivity.class public class ButtonListenerActivity extends AppCompatActivity implements View.On