给 TextView 加上效果和事件响应

昨晚研读 ApiDemo 源码至 com.example.android.apis.text.Link 类。首先,看一下其运行效果:

 

 

要给 TextView 加上效果,方式主要有几种:

  • 第一种,自动应用效果,使用 android:autolink 属性,如:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/text1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:autoLink="all"
            android:text="@string/link_text_auto"
            />
  •  第二种,在文本中使用 <a> 标签,如:
<string name="link_text_manual"><b>text2:</b> This is some other
      text, with a <a href="http://www.google.com">link</a> specified
      via an &lt;a&gt; tag.  Use a \"tel:\" URL
      to <a href="tel:4155551212">dial a phone number</a>
</string>
  •  第三种,和第二种其实是一样的,只不过将文本改在 JAVA 代码中,如:
TextView t3 = (TextView) findViewById(R.id.text3);
t3.setText(
    Html.fromHtml(
         "<b>text3:</b>  Text with a " +
         "<a href=\"http://www.google.com\">link</a> " +
         "created in the Java source code using HTML."));
t3.setMovementMethod(LinkMovementMethod.getInstance());
  •  第四种,前面三种可以说都是自动的,而第四种就是纯“手工”的了。通过创建 SpanableString 字符串,并在之上创 建一个或多个 Span 来实现丰富的效果。例子如下:
SpannableString ss = new SpannableString("text4: Click here to dial the phone.");
ss.setSpan(new StyleSpan(Typeface.BOLD), 0, 6,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
ss.setSpan(new URLSpan("tel:4155551212"), 13, 17,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

TextView t4 = (TextView) findViewById(R.id.text4);
t4.setText(ss);
t4.setMovementMethod(LinkMovementMethod.getInstance());

 

 

 完整的代码见 ApiDemo 吧,下面我提几点需要注意的:

  • setMovementMethod,此方法在需要响应用户事件时使用,如点击一个电话号码就跳转到拨号页面。如果不执行这个方法是不会响应事件的,即便文本看着已经是下划线蓝色字了。
  • Spanned.SPAN_EXCLUSIVE_EXCLUSIVE,这是在 setSpan 时需要指定的 flag,它的意义我试了很久也没试出来,睡个觉,今天早上才突然有点想法,试之,果然。它是用来标识在 Span 范围内的文本前后输入新的字符时是否把它们也应用这个效果。分别有 Spanned.SPAN_EXCLUSIVE_EXCLUSIVE(前后都不包括)、Spanned.SPAN_INCLUSIVE_EXCLUSIVE(前面包括,后面不包括)、Spanned.SPAN_EXCLUSIVE_INCLUSIVE(前面不包括,后面包括)、Spanned.SPAN_INCLUSIVE_INCLUSIVE(前后都包括)。看个截图就更明白了:
对比一下

 
 
TextView部分文字可以被点击的效果。TextView拼接图片,图片可以被点击 今有一需求,就是列表标题后拼接图标,点击图标跳转一个web页; 这里简单做下笔记,以供需要的人参考: //设置部分文字点击事件 ClickableSpan clickableSpan = new ClickableSpan() { @Override public void onClick(View widget) { Toast.makeText(conte... 阅读详情

相关推荐

TextView的点击效果

实现TextView的点击效果,获得更好的用户 体验

为一个TextView中的某个单词设置单击事件

为TextView中的字符串“dai ha ha dai lingdaidaing“中的dai单词设置单击事件 [java] view plaincopy public class MainActivity extends Activity {          @Override       public void onCreate(Bundle

qq_25474979的博客 682

ZYNQ实战:如何用AXI-stream FIFO解决跨时钟域数据同步难题(附完整代码)

本文深入探讨了在ZYNQ项目中,如何利用AXI-Stream FIFO有效解决PS与PL之间的跨时钟域数据同步难题。文章详细分析了异步FIFO的架构设计、关键配置参数,并提供了PS端软件策略与PL端逻辑设计的完整代码示例,旨在帮助开发者构建稳定可靠的数据流通道,优化系统性能。

nginx7reverse的博客 754

安卓java代码标签_Android实现动态添加标签及其点击事件

Android实现动态添加标签及其点击事件发布时间:2020-09-02 00:25:41来源:脚本之家阅读:92作者:尧石在做Android开发的时候,会遇到动态添加标签让用户选择的功能,所以自己写了个例子,运行效果图如下。标签可以左右滑动进行选择,点击的时候,会弹出toast提示选择或者取消选择了哪个标签。通过动态添加TextView作为标签,并给TextView设置背景,通过selector...

weixin_39831567的博客 386

openEuler 20.03 LTS面向RK3399移植系列(3)—openEuler 20.03 LTS面向Firefly RK3399的第一个版本(Linux kernel 4.4)

任务动机:完成openEuler面向RK3399开发板的移植。 任务描述:按照固件烧写准备,固件获取,固件打包和烧写的步骤实现openEuler面向RK3399开发板的移植,整理过程和相关命令记录到文档。 1. 制作openEuler的rootfs.img 1.1 开发环境 树莓派--openEuler系统 openEuler 20.03 LTS 的内测版本镜像,下载。 1.2 具体操作 1.2.1 ssh远程连接树莓派 确定树莓派IP ssh连接 1.2.2 制作rootfs.img

火种源码的机器人技术专栏 2369

西门子WinCC VBS脚本实战:5分钟搞定变量记录导出到Excel(附完整代码)

本文提供了一套高效的西门子WinCC VBS脚本方案,帮助工程师在5分钟内将变量记录数据导出至Excel。方案详细解析了时区转换、数据库连接、SQL查询优化等核心难点,并附带了完整、可直接使用的VBS代码,解决了工业自动化项目中数据导出的实际痛点。

moss5的博客 609

java文字点击响应,TextView文字多种颜色,多种字号,不同颜色点击响应不同事件...

packagecom.example.fortextdemo;importjava.util.ArrayList;importandroid.app.Activity;importandroid.graphics.Color;importandroid.os.Bundle;importandroid.util.Log;importandroid.widget.TextView;imp...

weixin_42351189的博客 242

二、Windows安装Docker到非C盘的全新教程(Windows版)

Windows安装Docker到非C盘的全新教程(Windows版)

funfan的博客 4万+

名词解释功能:TextView 给部分文字加下划线并实现点击事件

效果图先摆上,其中只有一个关键字,但无论几个都行的,作者已然测试了很多遍。 最近要做一个名词解释的功能:在一段文本里有N个关键名词,这些关键名词需要将这段文本与本地数据库相比较后得到。 1 public PhraseItem(long id, String name) { 2

zeng1990java的专栏 1744

ROS2 - 乐动激光雷达 LD06

STL-06P 主要由激光测距核心,无线传电单元,无线通讯单元,角度测量单元、电机驱动单元和机械外壳组成。STL-06P 测距核心采用 DTOF 技术,可进行每秒 5000 次的测距。每次测距时,雷达发射出红外激光,激光遇到目标物体后被反射到单光子接收单元。

机器人控制与仿真应用 3487

资产会计 Transaction Type 与业务交易的 Post to Affiliated Company 不一致导致的 AAPO176:成因剖析与修复指引

本文解析了SAP资产会计中常见的"AAPO176"错误提示,指出当交易类型(TType)与业务交易(Business Transaction)的"关联公司过账"(Post to Affiliated Company)标志不一致时,系统会拒绝过账。作者详细说明了该标志的作用机制,并提供了四种解决方案:修正交易类型使用、匹配正确的业务交易、调整系统配置或建立映射关系。文章还通过实际案例展示了配置错误对集团合并报表的影响,并附带了用于检查配置一致性的ABAP脚本。该错误通常

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 397

TextView文字图片混排并添加点击事件监听,Textview里面的ImageSpan添加点击响应事件

4.最好使用Spannable.SPAN_INCLUSIVE_EXCLUSIVE。配合删除和添加,这个最好用。1.这里使用空格来替代图片。当然也可以使用其他的字符(比如说文件的路径)来代替,只要长度别太长就可以。2.ImageSpan和ClickableSpan的start和end要一致。

fromVillageCoolBoy的博客 631

面向企业架构师的 SAP BTP 全景实践:多云、账户、运行时与端到端开发路径

摘要:SAP BTP为企业提供多云、多运行时(Cloud Foundry/Kyma/ABAP Cloud)的数字化转型平台,支持快速构建扩展应用。关键选择包括:1)根据合规与性能选择区域;2)区分Trial(90天限制)与Free Tier(无期限)方案;3)按场景选择运行时(CF适合微服务/Kyma适合云原生/ABAP Cloud适合S/4HANA扩展)。建议优先使用Free Tier进行POC,并通过BTP Cockpit统一管理,实现从验证到生产的平滑过渡。(150字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 253

android 给 textview 加上效果和事件响应,Android 给 TextView 加上效果和事件响应

研读 ApiDemo 源码至 com.example.Android.apis.text.Link 类。首先,看一下其运行效果:要给 TextView 加上效果,方式主要有几种:第一种,自动应用效果,使用 android:autolink 属性,如:android:id="@+id/text1"android:layout_width="match_parent"android:layout_he...

weixin_36439285的博客 347

视觉Transformer实战 | Cross-Attention Multi-Scale Vision Transformer(CrossViT)详解与实现

Vision Transformer (ViT) 在计算机视觉领域取得了巨大成功,但标准 ViT 结构在处理不同尺度的视觉特征时存在局限性。双分支 ViT (Cross-Attention Multi-Scale Vision Transformer, CrossViT) 通过引入双分支结构来解决这一问题,能够同时捕获局部和全局视觉特征。本文将详细介绍 CrossViT 的技术原理,并使用 PyTorch 从零开始实现 CrossViT 模型。

盼小辉丶的博客 722

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

android给 TextView 加上效果和事件响应 判断是否点击函数

android textView 加入连接方式: 1:使用android: 只需在textview中加入这个属性在里面写的文字中包含网址、电话、email的会自动加入连接地址。 如: http://schemas.android.com/apk/res/android" android:id="@+id/text1" android:layout_width="match

Dream It Possible 3656

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

android 给 textview 加上效果和事件响应,如何让TextView后面的Layout响应Click事件?...

有一个Layout(LinearLayout或者RelativeLayout)作为背景,他有一个TextView作为子元素,当点击TextView控件时,想让它所在的Layout响应。这个问题其实有两个解决方法:1、在TextView中声明android:id="@+id/my_recent_voice_edit"android:layout_width="148.3dp"android:layo...

weixin_39639381的博客 285

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Android关于子控件和父控件的事件响应问题

原文地址 http://blog.youkuaiyun.com/tianjf0514/article/details/7533154 当父控件中有子控件的时候,并且父控件和子空间都有事件处理(比如单击事件)。这时,点击子控件,父控件的单击事件就无效了。如下图: 比如一个Lin...

chengsou6273的博客 808

UI组件——TextView

1 TextView直接继承与View。 对每个控件都要关注:界面+ 事件。 界面是如何呈现的? 事件是如何实现的?   对每个控件做练习,并模仿商业app实现。 从最简单和最常见的控件来   约定: 特殊组件,详细讲事件和原理。 普通组件,简单讲解用法。 2 TextView(文本框) 表1 TextView支持的XML属性以及相关方法

YingVickyCao 628

3.Textview和Button的使用:点击按钮,返回点击次数

1.目标页面 2.UI布局设置 在该工程文件的activity_main.xml布局文件中设置TextView控件和Button控件。 1.设置文件的布局:线性布局。可以直接在直观的页面中单击鼠标右键:Change Layout——>选择线性布局(垂直) 2.TextView控件,显示点击的次数 TextView android:id="@+id/t

小火龙的博客 3060

Android基础教程(三)之-----简单的Button事件响应综合提示控件Toast的应用

大家好,我们这一节将简单的Button事件响应综合提示控件Toast的应用,在上节我们已经学会了在main.xml里定义了Button对象,今天我们来学习Button如何实现事件响应, Button按钮所触发的事件处理,我们称之为Event Handle,只不过在Android当中,按钮事件是由系统的Button.OnClickListener所控制,熟悉Java程序设计的读者对OnXxxL

ElaineYY714的专栏 791

按钮的android程序,Android编程基础之简单Button事件响应综合提示控件Toast应用示例...

本文实例讲述了Android简单Button事件响应综合提示控件Toast应用。分享给大家供大家参考,具体如下:前面讲述了在main.xml里定义了Button对象,这里我们来学习Button如何实现事件响应。Button按钮所触发的事件处理,我们称之为Event Handle,只不过在Android当中,按钮事件是由系统的Button.OnClickListener所控制,熟悉Java程序设计的...

weixin_39561673的博客 228

安卓设置点击效果

1、FrameLayout顶层为Button,Button设置了selector背景效果,Button不设置点击监听  结果FrameLayout及Button下的其它view设置selector和点击事件监听,都不会有效果(  selector无效和事件响应无效),只有Button有点击效果。即使对Button设置setEnable和焦点处理依然无效。

安卓鸟的专栏 1796

textview长按复制_TextView长按复制实现方法 3种方法实践总结

实现效果使用ContextMenu(1)注册菜单@Overridepublic void onCreate(Bundle savedInstanceState) {mMoblieTextView = (TextView) findViewById(R.id.mobile_textview);//注册上下文菜单registerForContextMenu(mMoblieTextView);}(2)o...

weixin_36339710的博客 599
上一篇: 金山词霸命令行客户端
下一篇: 让 TextView 的事件响应支持 Intent
javaEidolon
博客等级 码龄24年 1粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值