首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

基于TextView和StaticLayout的ImageSpan尺寸测量

是一种用于测量TextView中ImageSpan的尺寸的方法。在Android开发中,TextView是常用的文本显示控件,而ImageSpan是一种可以在文本中插入图片的Span对象。

通过基于TextView和StaticLayout的ImageSpan尺寸测量,可以获取ImageSpan在TextView中的准确尺寸,从而可以更好地控制文本和图片的布局和显示效果。

具体步骤如下:

  1. 创建一个TextView对象,并设置文本内容。
  2. 使用ImageSpan对象将图片插入到TextView的文本中。
  3. 使用StaticLayout对象对TextView进行布局,并获取布局后的文本尺寸。
  4. 获取ImageSpan的尺寸,可以通过获取ImageSpan的Drawable对象,然后获取其宽度和高度。
  5. 根据TextView的文本尺寸和ImageSpan的尺寸,可以计算出ImageSpan在TextView中的准确位置和大小。

这种尺寸测量方法适用于需要在TextView中插入图片,并且需要对图片进行精确布局的场景,比如聊天应用中的表情符号、带有图标的文本等。

腾讯云相关产品中,可以使用腾讯云移动直播(https://cloud.tencent.com/product/mlvb)来实现在移动端实时直播功能,该产品提供了丰富的功能和接口,可以满足开发者对于音视频处理和直播功能的需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

让你EditText删除表情比微信更高效--记一次android性能分析优化实战

(spData.start, spData.end); return true; } } return false; } SpData中保存了表情对应文本开始位置结束位置..., spData.end);这一行 精确定位 再准备顺藤摸瓜找到卡顿真正元凶,但是代码跳着跳着就到SpannableStringBuilderTextView这两个超大类里去了,在哪卡还不知道自己就绕晕了...()->StaticLayout.generate()这样调用栈 这就是为什么要从中间删除才会卡顿,从最后删不会原因 解决问题 通过以上结论可以知道,要解决从中间删除表情卡顿关键在于如何让ChangeWatcher.onSpanChanged...Emoji出现在TextView中逃不出也用ImageSpan,想看看谷歌会不会也有从中间开始删除表情卡顿feature,就去找了下这个库demo,一跑发现demo中不管从末尾还是从中间删都不会卡...如果你觉得那里值得改进,请给我留言。一定会认真查询,修正不足。谢谢。 希望读到这您能转发分享关注一下我,以后还会更新技术干货,谢谢您支持!

1.3K30

TextView实现自定义换行以及缩进文字格式化对齐

); setText(spannable); Spannable是根据当前TextView文本内容创建出来,然后可以用ImageSpan去替换Spannable中任意一个位置 文本缩进实现 依然是用...,会导致已经达到了TextView自动换行时机了,但是我们自定义换行时机还没有达到,所以自定义换行时机一定要发生在TextView自动换行时机之前这样才能保证自定义换行实现准确换行,至于如何在View...还没渲染时候首先测量View宽度,那就去参考onMeasure方法中是怎么测量了,measure方法就是根据转入参数去测量得出View测量长度宽度,然后通过getMeasuredWidth...getMeasuredHeight方法来获取到测量值,测量长度宽度核心就在于一个实际长度宽度,另一个就是测量模式,这两个属性结合就可以得出一个测量结果 测量View方法 int widthSpec...EXACTLY:父容器已经为子容器设置了尺寸,子容器应当服从这些边界,不论子容器想要多大空间(对应match_parent) AT_MOST:最大不能超过当前给定参考值(对应wrap_content

2.5K20

Android TextView 缩进指定距离

这种方法实现似乎没有第一种优雅,但是可以轻松避开第一行标签 title 文字居中对齐问题。 在否定一种方案提出新两种方案后,可以看看后两种方案到底可以怎么实现。...Standard 看名字就知道是它标准实现,它有两个构造方法,Standard(int every) Standard(int first, int rest) ,这个就是指定 TextView...For text that will not change, use a {@link StaticLayout}....到这里,两种方案实现完毕,接着再聊一个问题,那就是测量时机,这里需求总是出现在列表页面,这就涉及到一个计算时机问题,这里我解决方案是添加一个 addOnPreDrawListener 方式,这个方法是每次绘制之前都会调用...设置Span,最后看了下某东效果,它标签不是一个独立控件,看样子或许是使用 ImageSpan 来实现。

67530

Draw Text in Deep

Android系统提供了Textview来提供文字显示,但很多时候开发者还需要使用Canvas来绘制Text,这时候,canvas.drawText()就不像Textview使用这么简单了,需要掌握文字测量以及渲染流程...行间距(leading) TextView行间距调整设置是通过setLineSpacing(add, mult)方法,在xml中,可以通过lineSpacingExtralineSpacingMultiplier...字符间距(kerning) 对于textViewPaint绘制Text,可以分别使用各自类中getLetterSpacing()setLetterSpacing()方法获取设置字符间距,对于TextView...文字渲染Layout 在Android中,文字渲染基类是Layout类,它包含了文字测量、渲染布局所有功能,Layout类有几个子类: BoringLayout StaticLayout DynamicLayout...,与Paint使用基本一致,但大多用于StaticLayout或者是用于测量计算时使用。

1.3K30

真·富文本编辑器演进之路-Span开胃菜

影响Text外观尺寸 Span可以对Text部分外观进行修改,例如修改文字颜色、背景色、删除线、下划线等等。...Span会导致TextView重新测量文本,以实现正确布局渲染,例如,更改文本大小可能会导致字词显示在不同行上。...SpanWatcher继承自NoCopySpan,在TextViewsetText方法中,会基于传入文本创建一个新Spannable对象,在这个过程中SpanWatcher不会被复制到新Spannable...第二种方式,就是将文本行高属性做修改,也就是让ImageSpan尺寸小于行高,动态将原本文字行高,改为ImageSpan尺寸,甚至更大一点,这样ImageSpan自然就可以居中了。 ?...这也是ImageSpan基类,在这里就找到原生ImageSpan是如何处理偏移,参考它实现,我们只在getSize里面对传入ImageSpan尺寸>文字高度且对齐方式为ALIGN_CENTER

2.4K20

【Android】强大SpannableStringBuilder

(这是一个内容标记都可以更改文本类) 不同于我们平时赋值使用String、StringBuffer等,只能给TextView设置文本内容,而文本样式只能用TextView来控制,而且该样式可定制性还不大好...setText中使用 主要方法 SpannableStringBuilderSpannableString主要通过使用setSpan(Object what, int start, int end...ImageSpan : 图片 RelativeSizeSpan : 相对大小(文本字体) ScaleXSpan : 基于x轴缩放 StyleSpan : 字体样式:粗体、斜体等 SubscriptSpan...imageSpan1 = new ImageSpan(drawable); //将index为6、7字符用图片替代 spannableString.setSpan(imageSpan...); } 使用ImageSpan设置图片,将index为6、7字符替换成了图片,也就是说,该图片占有index67位置。

2.3K120

Android控件之TextView

零、前言 1.今天总结一下TextView 2.TextView在View家族地位是:源码行数11000+,可以说是个大类 3.TextView直接继承自View,EditText,Button...,CheckBox都是它后代 4.TextView可以说常用至极,所以掌握TextView是必要 5.一些细小偏僻点在这里综合一下,以便用时好找 --- 一、拿一个Hello WorldTextView...来举例 1、代码中设置字体大小,自选尺寸 mIdTv.setTextSize(TypedValue.COMPLEX_UNIT_DIP,20);//dp mIdTv.setTextSize(TypedValue.COMPLEX_UNIT_PT...imageSpan = new ImageSpan(drawable); ssSeal.setSpan(imageSpan, 0, 2, Spanned.SPAN_INCLUSIVE_INCLUSIVE...更多安卓技术欢迎访问:https://www.jianshu.com/c/004f3fe34c94 张风捷特烈个人网站,编程笔记请访问:http://www.toly1994.com 你喜欢与支持将是我最大动力

1.3K20

详解Android登陆界面用户协议解决方案

用户协议.png 一般来说每个app都有这个用户协议阅读相关功能,之前做都是一个协议,也都是单行,完全没有复杂度,可以一个checkbox加上一个textview来搞定,那么像图上这种复杂该怎们实现呢...来看他有神们不同,有那些难点 1,选中框被文字包裹,单纯checkboxtextview无法实现,因为选中框会在文字左方 2,协议文件有很多,不定项,文件是服务器返回,而且每个文件中间都会有一个颜色不一样点隔开...其实这样一看很多人都知道可以用textviewspan来搞定,算盘想过内容就不复习了,直接上代码 首先模拟一个协议数据,创建一个是否阅读变量 String[] protocols = {...= getDrawable(); //调用imageSpan方法获取drawable对象 canvas.save(); //获取画笔文字绘制时具体测量数据 Paint.FontMetricsInt...//与文字中间线对齐(这种方式不论是否设置行间距都能保障文字中间线图片中间线是对齐) // y+ascent得到文字内容顶部坐标,y+descent得到文字底部坐标

1K31

Android 千变万化 TextView:神奇 SpannableString

前言 TextView 可以说是 Android 中最简单、最常见文字控件了,几乎每个页面都有 TextView 身影,绝大多数情况我们用 TextView 只是单纯地显示一个文本,但是 TextView...TextView SpannableString 一起使用具体有哪些神奇地方呢?本场 Chat 将全面地介绍 SpannableString 用法,让你 TextView 不再简单。...英语词典上还真不太好查,我自己理解意思是:可测量、可塑造,所以 SpannableString 就是一种可测量可塑造字符串。...但是 textColor background 只能对 textView 整体生效,而 SpannableString 可以动态给不同位置文字设置不同颜色。...(4)构建 ImageSpan SpannableString,把 drawable 字符串 str 对应起来。

3.5K20

Android TextView实现查看全部收起功能

在工作遇到上图所示一个小需求,将“查看全部”提示连在原文后面,使用一个textview显示。...实现该功能大致步骤: 判断处理文字是否超过最大限制行数; 如果超过行数限制,截取掉超过部分,并加上“...查看全部”; 然后用SpannableString将“查看全部”设置为蓝色,并且给整个textview...实现上述步骤难点在于: 如何在setText()之前判断处理文字是否超过了最大限制行数 如何获取超过限制行数最后一个文字下标 解决以上两个问题需要用到一个处理TextView文本排版,拆行处理工具类...如果需要详细了解StaticLayout工作原理,可参考StaticLayout 源码分析 然后我们可以通过调用getLineCount()方法获取到布局该文本行数,调用getLineStart(int...传入相应参数 StaticLayout staticLayout = new StaticLayout(content,paint,width, Layout.Alignment.ALIGN_NORMAL

4.3K82

Android实现可点击展开TextView

ellipsizeStr, desc);//显示收缩状态文本图标 } // TextView 实际显示文本长度 == 应该显示文本长度(正常状态)...);//显示展开状态文本图标 } if(Build.VERSION.SDK_INT =16){ tv.getViewTreeObserver(...来给 TextView 添加图标,但是普通 ImageSpan 是不能响应点击事件而且也不能设置图片位置,那么我们要如何实现一个可以响应点击事件并且可以设置图片位置 ImageSpan 呢?...Step 1: 新建一个 ClickableImageSpan 类,使之具有 ImageSpan 所有属性,并且可以点击,图片垂直居中 。...ImageSpantextview中插入图片 自定义可点击ImageSpan并在TextView中内置“View“ 以上就是本文全部内容,希望对大家学习有所帮助。

2.1K20

HenCoder Android 开发进阶:自定义 View 1-3 文字绘制

如果你需要进行多行文字绘制,并且对文字排列样式没有太复杂花式要求,那么使用 StaticLayout 就好。...2 Paint 对文字绘制辅助 Paint 对文字绘制辅助,有两类方法:设置显示效果测量文字尺寸。...以上就是 Paint 对文字显示效果设置类方法。下面介绍它第二类方法:测量文字尺寸类。...2.2 测量文字尺寸类 不论是文字,还是图形或 Bitmap,只有知道了尺寸,才能更好地确定应该摆放位置。...由于文字绘制图形或 Bitmap 绘制比起来,尺寸计算复杂得多,所以它有一整套方法来计算文字尺寸。 2.2.1 float getFontSpacing() 获取推荐行距。

1.2K20

NewsQuark:基于 ESP32 电子测量调试工具

开发~ 频率计一角 QUARK 是一个集电子测量探头调试工具为一体、对外开源、且具有无线连接功能手持设备,适用于 Arduino、ESP32、STM32 类似平台。...使用了一块IPS屏幕 装配时候爆炸图 特性规格 电压测量范围 0~26 V 电流测量范围 0~3.2 A 电阻测量范围 0~2 MΩ 电容测量范围 2 pf~1000 uF 电感测量高达 1 H...在测量电压时,Quark 会显示电压是否处于 1.8 V、3.3 V 或 5 V 逻辑电平范围内;测量电流时会显示瞬时值一个图表;测量电容、电阻或电感时,会显示与测量值相对应颜色代码或其他代码。...PWM在负载下瞬时绝对值 在测量电阻、电容、电感参数时,QUARK显示屏会显示元件SMD代码条纹代码。 QUARK 示波器会自动调整波形标度、触发显示。...内部储存空间初始化电流测量芯片初始化设置 I2C配置引脚配置 按钮+ADC+测量引脚等 TFT屏幕初始化 void BluetoothHandler() { String

1.8K20

Android控件TextView实现静态图与动态GIF图文混排

最近做项目功能时,需要在TextView中展示图文,刚开始做时候以为很简单,只需要用个ImageView跟TextView来展示就行了,可是发现这样做,不能实现我们需要效果,这就需要涉及到富文本TextView...来展示图文,下面介绍静态图片图文动态GIF图文两种展示方式: 静态图片图文: 效果如下: [bkcvxx8is4.png] 这里写图片描述 代码: String content...; sp.setSpan(imageSpan, 0, 1, ImageSpan.ALIGN_BASELINE);//0,1表示展示图片起始位置,占一个字位置 textOne.setText...GlidePicasso有90%相似度,准确说,就是Picasso克隆版本。但是在细节上还是有不少区别的。而且性能上更加优化。...把Glide引入到我们项目中,然后在创建UrlDrawable GlideImageGetter 代码可以参考:底部公众号回复"富文本"即可获取 方法调用: String content

1.9K30
领券