首页 > 其他分享 >直播软件开发,TextView内容过多,超过n行显示“...全文”

直播软件开发,TextView内容过多,超过n行显示“...全文”

时间:2023-07-03 14:24:23浏览次数:39  
标签:... 软件开发 android maxLine 全文 TextView fromHtml

直播软件开发,TextView内容过多,超过n行显示“...全文”

 

/**
     * TextView超过两行,末尾显示"...全文"
     * 为避免抖动,需在xml中设置TextView的maxHeight
     * @param maxLine 最多几行
     * @param strNum  末尾显示字符数
     * @param str  末尾显示字符
     */
    open fun setOnGlobalLayout(
        it: TextView,
        maxLine: Int = 2,
        strNum: Int = 3,
        str: String = "...<font color='#212126'> 全文</font>"
    ) {
        val observer = it.viewTreeObserver
        observer.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
            override fun onGlobalLayout() {
                if (it.width > 0 && it.height > 0) {
                    it.visibility = View.VISIBLE
                    if (observer.isAlive) {
                        //判断ViewTreeObserver 是否alive,如果存活的话移除这个观察者
                        it.viewTreeObserver.removeOnGlobalLayoutListener(this)
                    }
                    if (it.lineCount > maxLine) {
                        val html1: String =
                            it.text.toString().subSequence(0, it.layout.getLineEnd(maxLine - 1) - strNum).toString()
                        it.text = fromHtml(html1 + str)
                    }
                }
            }
        })
    }
    private fun fromHtml(source: String?): Spanned? {
        return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            Html.fromHtml(source, Html.FROM_HTML_MODE_LEGACY)
        } else {
            Html.fromHtml(source)
        }
    }
 

注意 :为避免抖动,需在xml中设置TextView的maxHeight

 


<TextView
    android:id="@+id/tv_content"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:maxHeight="@dimen/dp_40"
    .../>

 

 以上就是直播软件开发,TextView内容过多,超过n行显示“...全文”, 更多内容欢迎关注之后的文章

 

标签:...,软件开发,android,maxLine,全文,TextView,fromHtml
From: https://www.cnblogs.com/yunbaomengnan/p/17522767.html

相关文章

  • 陪诊小程序系统|陪诊软件开发|陪诊系统功能和特点
    随着医疗服务的逐步改善和完善,越来越多的人群开始走向医院就诊,而其中不少人往往需要有人陪同前往,这就导致了许多矛盾与问题的发生,比如长时间等待、找不到合适的陪诊人员等。因此为人们提供一种方便快捷的陪诊服务成为了一种新的需求,于是陪诊小程序浮出水面,下面我就给大家讲讲陪诊小......
  • 展开语法和剩余语法(剩余参数)都是三个点...
    展开语法(Spreadsyntax),可以在函数调用/数组构造时,将数组表达式或者string在语法层面展开;还可以在构造字面量对象时,将对象表达式按key-value的方式展开;剩余参数语法允许我们将一个不定数量的参数表示为一个数组。区别是展开语法是把一个变量展开,剩余参数是一个参数用来代......
  • ERROR 3529 (HY000): Cannot load component from specified URN....
    这里介绍、演示一下,安装validate_password组件时遇到ERROR3529(HY000):CannotloadcomponentfromspecifiedURN:'file://component_validate_password'错误的原因当前测试的环境为MySQL8.0.33mysql> select @@version;+-----------+| @@version |+-----------+| 8.......
  • 当我用Python爬取了京东商品所有评论后发现....
    不知道各位网购的时候,是否会去留意商品评价,有些小伙伴是很在意评价的,看到差评就不想买了,而有些小伙伴则是会对差评进行理性分析,而还有一类人不在乎这个。当然这都是题外话,咱们今天主要的目的是使用Python来爬取某东商品的评价,并保存到CSV表格。1、数据采集逻辑在进行数......
  • 图书商城Vue+Element+Node项目练习(...)
    本系列文章是为学习Vue的项目练习笔记,尽量详细记录一下一个完整项目的开发过程。面向初学者,本人也是初学者,搬砖技术还不成熟。项目在技术上前端为主,包含一些后端代码,从基础的数据库(Sqlite)、到后端服务Node.js(Express),再到Web端的Vue,包含服务端、管理后台、商城网站、小程序/App,分......
  • 直播商城源码,EditView和TextView的综合应用
    直播商城源码,EditView和TextView的综合应用MainActivity.main publicclassMainActivityextendsAppCompatActivity{  Buttonbt;  TextViewtv;  EditTextet;  View.OnClickListenerocl=null;  @Override  protectedvoidonCreate(Bundlesa......
  • JS中字符串28种常用API总结,substring、slice、JSON.stringify、match、split、search
    一、引言在前端开发中,处理字符串是一项常见的任务。JavaScript提供了一系列的字符串API,用于操作和处理字符串数据。字符串常用的API方法有很多,包括查找字符串、截取字符串、替换字符串、分割字符串、大小写转换、字符串拼接和字符串比较等等。本文将介绍一些常用的字符串API......
  • JS中数组22种常用API总结,slice、splice、map、reduce、shift、filter、indexOf......
    一、引言在前端开发中,数组是一种常见且重要的数据结构。数组提供了许多便捷的方法来操作和处理其中的数据。本文将简单介绍前端中数组常用的API,包括添加、删除、截取、合并、转换等操作。二、push()方法和pop()方法push()方法用于向数组末尾添加一个或多个元素,并返回修改......
  • JDK/bin目录下的不同exe文件的用途(appletviewer、HtmlConverter、jar、java、javac、
    目录---------------------------------------1.javacexe2.appletviewerexe3.jarexe4.javadocexe5.javahexe6.HtmlConverterexe7.orbdexe8.policytoolexe9.rmicexe10.rmidexe11.rmiregistryexe12.serialverexe13.servertoolexe14.rmic15.rmid16.rmiregistry17.serialver18.jarsi......
  • 求1+2+3+...+n
    求1+2+3+...+n题目:求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。数据范围:0<n≤200进阶:空间复杂度O(1),时间复杂度O(n)示例1:输入:5返回值:15示例2:输入:1返回值:1思路一:根据我们刚学的内部类的方法进行求解,......