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

如果文本不适合TextView,如何模糊最后一行文本

在Android开发中,如果文本内容超过了TextView的显示范围,我们可以通过一些技巧来模糊最后一行文本,以提醒用户还有更多内容可见。以下是一种实现方式:

  1. 首先,我们需要获取TextView的高度和行数。可以通过以下代码获取:
代码语言:txt
复制
int textViewHeight = textView.getHeight();
int lineCount = textView.getLineCount();
  1. 然后,我们需要获取最后一行文本的起始和结束位置。可以通过以下代码获取:
代码语言:txt
复制
int lastLineStartOffset = textView.getLayout().getLineStart(lineCount - 1);
int lastLineEndOffset = textView.getLayout().getLineEnd(lineCount - 1);
  1. 接下来,我们需要创建一个SpannableString对象,并为最后一行文本应用模糊效果。可以通过以下代码实现:
代码语言:txt
复制
SpannableString spannableString = new SpannableString(textView.getText());
BlurMaskFilter blurMaskFilter = new BlurMaskFilter(8, BlurMaskFilter.Blur.NORMAL);
spannableString.setSpan(new MaskFilterSpan(blurMaskFilter), lastLineStartOffset, lastLineEndOffset, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  1. 最后,将修改后的SpannableString对象设置回TextView中:
代码语言:txt
复制
textView.setText(spannableString);

这样,最后一行文本就会被模糊处理,提醒用户还有更多内容可见。

需要注意的是,上述代码中使用了BlurMaskFilter来实现模糊效果,你也可以根据需求选择其他的效果,比如使用ForegroundColorSpan改变文本颜色等。

推荐的腾讯云相关产品:腾讯云移动推送(https://cloud.tencent.com/product/umeng_push)可以用于在移动应用中实现消息推送功能,可根据业务需求进行定制化配置。

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

相关·内容

如何用命令行将文本每两行合并为一行

更多好文请关注↑ 问题: 我有一个文本文件,其格式如下:第一行为“KEY”,第二行为“VALUE”。...KEY 7329:2407 string 2 KEY 0:1774 string 1 若能在键值之间使用某种分隔符,如 $ 或 ,,那就更好了: KEY 4048:1736 string, 3 如何把两行合并成一行...下面对该命令进行详细解释: awk:这是一个强大的文本处理工具,它逐行读取输入文件(此处为yourFile),根据提供的模式和动作对每一行进行处理。 '{...}'...如果余数为非零(即奇数行),表达式求值为真(True)。 printf "%s, ", $0;:如果NR%2为真(即当前行是奇数行),执行以下动作: printf函数用于格式化输出字符串。...这个过程会一直重复,直到文件的最后一行。 最终效果是将yourFile中的每相邻两行合并为一行,中间以逗号和空格分隔。

31010
  • ​Linux 打印文本部分行内容(前几行,指定行,中间几行,跨行,奇偶行,后几行,最后一行,匹配行)

    背景 打印对账文件最后一行汇总信息,通过钉钉定时发送到运维群。顺便总结下 Linux 打印文本部分行内容的各种方法。...测试文本 # 生成测试文本内容 $ seq -f "%02g daodaotest" 1 10 > test.txt # 查看测试文本内容,并显示行号 $ cat -n test.txt 1...i)' test.txt $ sed -n 'n;p' test.txt $ sed -n '1~1p' test.txt $ sed -n '1,$n;p' test.txt 打印最后 N 行内容...# tail 打印后 5 行内容 $ tail -5 test.txt $ tail -n 5 test.txt 打印最后一行内容 # tail 打印最后一行内容 $ tail -n 1 test.txt...# sed 打印最后一行内容 $ sed -n '$p' test.txt # awk 打印最后一行内容 $ awk 'END {print}' test.txt 打印匹配行内容 # 打印以 "

    13.3K32

    TextView自定义下划线、点击弹框

    看来这种方法不可行… 于是,便开始了我的自定义之路~~~~ 先看效果图: 这是纯文本TextView ? 这是富文本TextView ? 02 — 分析 ?...要实现以上需求,应该从这几个方面入手: 文本展示,普通文本调用TextView的setText方法既可,如果是富文本,就使用TextView的fromHtml方法,至于图片如何展示,我在上一篇文章用TextView...给TextView设置要划线的起始位置和结束位置,需要计算出在哪些行进行绘制,每行又是从哪里开始,到哪里结束,注意第一行最后一行。...然后就是在onDraw方法中对计算出的行进行逐行绘制,在最后一行的结束位置绘制笔记图标(小圆圈)。...如果最后一行的,在本行的结束位置开始绘制笔记图标。 使用canvas.drawCircle绘制圆圈,而圆的圆形坐标可以下划线最后的位置进行绘制。

    1.5K30

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

    实现该功能大致步骤: 判断处理的文字是否超过最大的限制行数; 如果超过行数限制,截取掉超过的部分,并加上“...查看全部”; 然后用SpannableString将“查看全部”设置为蓝色,并且给整个textview...实现上述步骤的难点在于: 如何在setText()之前判断处理文字是否超过了最大的限制行数 如何获取超过限制行数最后一个文字的下标 解决以上两个问题需要用到一个处理TextView文本排版,拆行处理的工具类...int ellipsizedWidth 省略宽度 int maxLines 最大行数 在构造函数中最后会相继调用generate()和out()方法,对文本进行拆行处理。...,首先我们需要在textview外面包一层布局, 然后在自定义一个Animation,最后在点击事件处开始动画即可。...的高度,以此让textview一行一行的展示 contentView.getLayoutParams().height = elipseHeight;

    4.5K82

    Android自定义弹窗提醒控件使用详解

    mDividerList = new ArrayList<TextView (); /** * 自定义对话框的构造方法,将根据names中存放的文本从上至下依次创建Item,每个Item中的文本信息为对应...isLastLine2Items) {// 如果不是显示到同一行中 if (i == 0) { contentView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18f...),如果最后一行设置为两个Item,则两个Item中间的分割线也算一个) */ public void setColor2DividerLine(int color, int dividerLineIndex...;如果最后一行设置为两个Item,则两个Item中间的分割线也算一个), * * 当给定数组color长度小于分割线数的时候,只设置前color.length个分割线的颜色; * * 当color长度大于分割线数的时候..., 如果最后一行设置成了两个Item,则如果没有为其设置点击监听的话,其默认也执行隐藏当前对话框的操作 * * * @param listeners */ public void setOnClickListener2Items

    1.4K20

    浅谈ClickableSpan , 实现TextView文本某一部分文字的点击响应

    文本:http://www.baidu.com  这么一个效果:一行文本当中 前面显示黑色颜色的“超文本:”,后面显示红色颜色的“http://www.baidu.com” 并且要求红色字体的部分可以点击...想想,确实可以这么实现,对于一般情况可以 但是,文本长度过长的情况下呢,会出现第二个TextView未能一行显示的文本会换行,但是不是在第二行的一开始 ?   而你希望的效果是    ?...不好实现,那么如果使用一个TextView实现一段文字,既可以有不同的颜色,也可以实现一段文字不同部分的文字有点击事件呢?...既然我们知道了如何实现一个TextView显示不同的颜色,那么还有一个问题就是如何实现点击 同一个TextView不同部分的文字进行相应的响应操作 现在就学习: ClickableSpan 源码很短,...如果这个TextView使用了.setMovementMethod()方法,那么这部分setSpan()的文本部分可以被选择,如果点击了,会执行onClick()接口回调方法 */ public abstract

    1.1K40

    浅谈ClickableSpan , 实现TextView文本某一部分文字的点击响应

    文本:http://www.baidu.com  这么一个效果:一行文本当中 前面显示黑色颜色的“超文本:”,后面显示红色颜色的“http://www.baidu.com” 并且要求红色字体的部分可以点击...想想,确实可以这么实现,对于一般情况可以 但是,文本长度过长的情况下呢,会出现第二个TextView未能一行显示的文本会换行,但是不是在第二行的一开始 ?   而你希望的效果是    ?...不好实现,那么如果使用一个TextView实现一段文字,既可以有不同的颜色,也可以实现一段文字不同部分的文字有点击事件呢?...既然我们知道了如何实现一个TextView显示不同的颜色,那么还有一个问题就是如何实现点击 同一个TextView不同部分的文字进行相应的响应操作 现在就学习: ClickableSpan 源码很短,...如果这个TextView使用了.setMovementMethod()方法,那么这部分setSpan()的文本部分可以被选择,如果点击了,会执行onClick()接口回调方法 */ public abstract

    2.1K60

    真·富文本编辑器的演进之路-【译】破解Span性能之谜

    我们在之前的一篇文章中谈到了如何使用Spans,哪些Spans是开箱即用的,如何轻松创建自己的Spans,以及如何测试它们。 现在让我们看看在处理文本时,可以使用哪些API来确保特定场景的最大性能。...我们将探索更多关于spans的秘密,以及Android框架如何使用它们。最后,我们将看到我们如何在同一进程或进程之间传递Span,并在此基础上,当你决定创建自己的自定义Span时,需要注意那些事项。...TextLine类代表了一行有风格的文本,它特别适用于扩展CharacterStyle、MetricAffectingSpan和ReplaceSpan的Span。...Text set on a TextView never changes 如果你只是在TextView上设置一次文本,而从不更新,你可以直接创建一个新的SpannableString或SpannableStringBuilder...通过了解Android如何用spans渲染文本,希望你能在你的应用中有效地使用它。

    1.4K10

    【Android】TextView的文字长度测量及各种padding解析

    ---- 这篇博客会讲得比较杂: TextView里各种padding的含义? 如何计算每行文字的长度?...虽然我们平时只用TextView显示纯文本数据,但其实TextView支持设置Background,四周的drawable小图标,以及Span数据比如文本或图片。...同理,getExtendedPaddingBottom()就是最后一行文字到TextVeiw底部距离。其他情况下,他的值等于getCompoundPaddingTop/Bottom()的值。...13.png 如何计算每行文字的长度? Q:每行文字的长度不就等于TextView的宽度吗?直接getWidth()不就好了?...如果是maxLines="1"的话,那么就像上一问中分析的那样,所有的文字其实已经被自动换行了,只显示第一行,而换行是什么,就是为了让每行文字的长度超过文字区域的宽度才进行的换行,也就是说,如果一段文字经过

    3.9K70

    安卓开发之简单组件使用

    一、TextView组件(文本框) <TextView android:id=”@+id/firstText” android:text=”第一行“ android:gravity=”top” android...paddingBottom=”40dip” android:layout_weight=”1″ android:singleLine=”true” /> 1、 直接继承View是EditText和Button的父类;其中TextView...的xml属性很多具体参考手册即可; 2、 由于TextView中只用于显示文字,如果图文混合可以绘制一个drawable对象即可 xml属性对照(部分) android:autoLink是否将符合指定格式的文本转换可单击的超链接形式...:editable是否可以编辑 android:ellipsize超过框长度如何处理(五个属性) android:gravity设置文本框内文本对齐方式 android:hint文本框内容为空时,默认显示文字...android:password文本框是一个密码框 android:phoneNumber文本框只能输入数字 android:scrollHorizontally:设置文本框不够显示全部内容是否允许水平滚动

    93060
    领券