android span的用法,Android Span的使用
Android中TextView作为最常用的组件, 常常有很多特殊的需求,例如:嵌入图标、部分文字可点击,点击链接等,这些需求都可以通过Span来实现。
上面就是系统提供的所有可用的Span类。下面就来解决上面提出的两个问题。
1.文字中添加图片
这种方式的实现主要是利用ImageSpan
val spannableString = SpannableString("img这是一张图片")
getDrawable(this, R.mipmap.ic_launcher)?.let {
it.setBounds(0, 0, 100, 100)
val dynamicDrawableSpan =
ImageSpan(it, ImageSpan.ALIGN_BOTTOM)
spannableString.setSpan(dynamicDrawableSpan, 0, 3 Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
val subscriptSpan = SubscriptSpan()
spannableString.setSpan(subscriptSpan, 0, 3, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
tv.setText(spannableString)
}
代码中不是使用了ImageSpan,同时使用了SubscriptSpan,主要是为了,调整图片的位置,实现类似居中的效果,在实际开发中可以通过,SubscriptSpan、SuperscriptSpan,来调整图片的位置。
2、文字可点击
val spannableString = SpannableString("你好,再见")
val dynamicDrawableSpan =
object : ClickableSpan() {
override fun onClick(widget: View) {
Toast.makeText(widget.context, "点击你好", Toast.LENGTH_SHORT).show()
}
}
spannableString.setSpan(dynamicDrawableSpan, 0, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
tv.text = spannableString
tv.movementMethod = LinkMovementMethod.getInstance()
文字点击的方案就是实现ClickableSpan的onClick方法,然后设置movmentMethod就可以了,不过他会有可以点击的文字会有独特的颜色和下划线。想要修改的话只要继承ClickableSpan,然后重写updateDrawState方法就好了。
abstract class TextColorSpan(var color: Int) : ClickableSpan() {
override fun updateDrawState(ds: TextPaint) {
ds.color = color
}
}
总的来说,span的使用并不复杂,只要使用系统提供的Span就可以解决大部分问题。
android span的用法,Android Span的使用相关推荐
- android中view用法,Android中ImageView用法实例分析
本文实例分析了Android中ImageView用法.分享给大家供大家参考,具体如下: 猜牌游戏大家可能以前都玩过,这里我们用这个小游戏来说明ImageView的用法. 首先,在res/drawabl ...
- android span的用法,android – 如何使用TextAppearanceSpan
编辑: 你可以使用SuperscriptSpan() Spannable WordtoSpan = new SpannableString("13.500,27"); Wordto ...
- android palette组件用法,Android Support Palette使用详解
使用Palette API选择颜色 良好的视觉设计是app成功所必不可少的, 而色彩设计体系是设计的基础构成. Palette包是支持包, 能够从图片中解析出突出的颜色, 从而帮助你创建出视觉迷人的应 ...
- android palette组件用法,Android Material Design:使用Palette优化界面色彩搭配。
我写过一篇博客介绍了常用Material Design控件的使用. http://www.jianshu.com/p/776cc6329fff 本想把大部分的Material Design的知识点写到 ...
- android palette组件用法,android Palette使用详解
Palette是一个可以从图片(Bitmap)中提取颜色的帮助类,可以使UI更加美观,根据图片动态的显示相应的颜色.现在最新的api是在版本22.0.0添加的,本篇文章也是使用的22.0.0的api版 ...
- android palette组件用法,Android Palette(调色板)的使用
一.Palette的简单介绍 android-support-v7-palette 里面的Palette是Android L SDK 中的新特性,可以使用 Palette 从图像中提取出突出的颜色(主 ...
- android palette组件用法,android Palette调色板使用详解
Palette是一个可以从图片(Bitmap)中提取颜色的帮助类,可以使UI更加美观,根据图片动态的显示相应的颜色.现在最新的api是在版本22.0.0添加的,本篇文章也是使用的22.0.0的api版 ...
- 49.Android中各种Span的用法
49.Android中各种Span的用法 Android中各种Span的用法 前言 SpannableStringBuilder URLSpan UnderlineSpan TypefaceSpan ...
- Android中各种Span的用法——转载
转载一篇觉得很好的文章,在转载中成长:https://blog.csdn.net/qq_16430735/article/details/50427978 Android中各种Span的用法 前言 S ...
最新文章
- 计算机启动和操作系统加载小话
- Consul入门04 - Consul集群
- Docker中安装DB2的详细教程和DBVisualize的安装教程
- QT读取Word文档
- INVALID_HANDLE_VALUE 、 NULL、nullptr 和 nullptr_t 的联系
- SAP ABAP CDS view里的注解在ABAP后台是如何被解析的?
- [Hei-Ocelot-Gateway ].Net Core Api网关Ocelot的开箱即用版本
- java 代码换行_作为一名资深的程序员,你见过哪些很想吐槽的代码
- CC2530基础实验二:电源管理与睡眠定时器
- hdu1107+武林+模拟
- Oracle 之利用BBED修改数据块SCN----没有备份数据文件的数据恢复
- 定制化centos7
- 2021届双非本科的心酸秋招经历总结及经验分享
- python中pip如何更新到最新版本
- 只有网安人才知道的事情!
- 数据中台已成下一风口,它会颠覆数据工程师的工作吗?
- 【星辰傀儡线·命运环·卷二 尘埃】 4 蓝月
- 基于STM32的ADS8688驱动
- 社交电商:拼团与分销商业模式的区别在哪里?
- pi在c语言中代表什么6,《光纤通信技术》综合练习
热门文章
- 【PAT甲级 删除字符串中的指定字符】1050 String Subtraction (20 分) C++
- 【计算机学科】最好的学校排名
- Linux网络编程 之 套接字(四)
- Dev C++ 无法调试问题的解决——小白也能看懂!
- 数据结构中图的一些定义
- 数据结构题:根据所给权值设计相应的哈夫曼树,并设计哈夫曼编码
- 目前计算机科学研究的最前沿的课题之一,04大学计算机础课程试卷.doc
- dede 验证码不显示 vdimgck.php,Dede后台验证码不显示解决方法详解(dedecms 5.7)
- shell脚本详解(十)——sed编辑器的使用方法
- miniGUI安装笔记(转)