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

Android中TextView实现超过固定行数显示“…展开全部”

前言 大家都知道,如果要让TextView只显示一行,多出部分用省略号代替的话非常容易,只需要为xml文件中的TextView控件添加android:singleLine="true"即可,那么如果我想让它显示多行的时候应该怎么做呢...废话不多说,先看效果图: 展开前: ? 展开后: ?...示例代码: 工具类: /** * 设置textView结尾...后面显示的文字和颜色 * @param context 上下文 * @param textView textview * @param...@param originText 原文本 * @param endText 结尾文字 * @param endColorID 结尾文字颜色id * @param isExpand 当前是否是展开状态...例子: boolean isExpandDescripe = false;// 初始展开状态为false,即未展开; Onclick() { ... // 给textView设置点击事件: case

2.6K20
您找到你想要的搜索结果了吗?
是的
没有找到

微信小程序展开全文

最近需要做一个展示部分文字然后展开全文的功能,要求如下: 1、最多显示三行,文末使用省略号表示 2、文字显示1行,2行及文字不满三行时不要显示展开全文按钮 解决方案: 最开始设置显示4行,查询节点获取文字高度...,如果是小于4行的高度,不显示展开,如果不是,设置显示3行,然后显示展开全文按钮。...1、为啥开始显示4行? 我没找到判断文字刚好3行的方法。。。所以只能开始显示4行,这样如果需要显示展开全文,页面基本不会抖动。。。...-- 例:超过三行 --> <view class='{{showTotal3 ?...未<em>展开</em>.png ? 已<em>显示</em>全部.png 没有做收起功能了,不过加上去很容易了。希望大家喜欢~~~

1.5K10

如何实现文本内容折叠并显示“...查看全部”?

n行(比如3行),不超过n行正常显示超过n行则在最后一行尾部显示展开”或“查看全部”之类的按钮,点击按钮则展开显示全部内容,或者跳转到其它页面展示所有内容。...二、实现原理 纯css很难完美实现这个功能,所以还得借助js来实现,实现思路大体相似,都是判断内容是否超过指定行数,超过则截取字符串的前x个字符,然后然后和“...查看全部”拼接在一起,这里的x即截取长度...想通过上述方案实现,有几个问题需要解决: 怎样判断文字是否超过指定行数 如何计算字符串截取长度 动态响应,包括响应页面布局变动、字符串变化、指定行数变化等 下面具体研究一下这些问题。...1、怎样判断一段文字是否超过指定行数? 首先解决一个小问题:如何计算指定行数的高度?我首先想到的是使用textarea的rows属性,指定行数,然后计算textarea撑起的高度。...最直观的想法就是直接遍历,让x从0开始增长到显示文本总长度,对于每个x值,都计算一次文字是否超过N行,没超过则加继续遍历,超过则获得了合适的长度x - 1,跳出循环。

4.6K20

技巧:文本超过N行折叠内容并显示“...查看全部”

作者:MUMA https://wintc.top/article/58 多行文本超过指定行数隐藏超出部分并显示“...查看全部”是一个常遇到的需求,网上也有人实现过类似的功能,不过还是想自己写写看,...n行(比如3行),不超过n行正常显示超过n行则在最后一行尾部显示展开”或“查看全部”之类的按钮,点击按钮则展开显示全部内容,或者跳转到其它页面展示所有内容。...多行文本超过指定行数折叠 二、实现原理 纯CSS很难完美实现这个功能,所以还得借助JS来实现,实现思路大体相似,都是判断内容是否超过指定行数,超过则截取字符串的前x个字符,然后然后和“...查看全部”拼接在一起...怎样判断一段文字是否超过指定行数? 首先解决一个小问题:如何计算指定行数的高度?我首先想到的是使用textarea的rows属性,指定行数,然后计算textarea撑起的高度。...最直观的想法就是直接遍历,让x从0开始增长到显示文本总长度,对于每个x值,都计算一次文字是否超过N行,没超过则加继续遍历,超过则获得了合适的长度x - 1,跳出循环。

2.1K20

技巧:文本超过N行折叠内容并显示“...查看全部”

作者:MUMA https://wintc.top/article/58 多行文本超过指定行数隐藏超出部分并显示“...查看全部”是一个常遇到的需求,网上也有人实现过类似的功能,不过还是想自己写写看...n行(比如3行),不超过n行正常显示超过n行则在最后一行尾部显示展开”或“查看全部”之类的按钮,点击按钮则展开显示全部内容,或者跳转到其它页面展示所有内容。...多行文本超过指定行数折叠 二、实现原理 纯CSS很难完美实现这个功能,所以还得借助JS来实现,实现思路大体相似,都是判断内容是否超过指定行数,超过则截取字符串的前x个字符,然后然后和“...查看全部”拼接在一起...怎样判断一段文字是否超过指定行数? 首先解决一个小问题:如何计算指定行数的高度?我首先想到的是使用textarea的rows属性,指定行数,然后计算textarea撑起的高度。...最直观的想法就是直接遍历,让x从0开始增长到显示文本总长度,对于每个x值,都计算一次文字是否超过N行,没超过则加继续遍历,超过则获得了合适的长度x - 1,跳出循环。

2.5K10

开发 | 小程序也能像朋友圈一样「折叠全文」?有了这个技巧就能做!

主要交互有三点: 让文本过长时折叠、并显示一个「全文」的点击文本 当用户点击「全文」则会展开被折叠的文本,并切换该按钮为「收起」 对不过长的文本则正常显示 本质上,要实现这个效果,得实现两个目标: 判断文本是否过长...如何判断文本是否过长? 所谓「文本过长」,就是文本占据屏幕的高度太大。之所以要判断这个,是为了能告知逻辑层控制「全文」按钮的展示与切换。 当然,如果你的小程序没这个交互情况,完全可忽略这个问题。...判断文本过长的最直接方法,是文本行数超过某个值。在浏览器端,可通过 DOM 获取容器高度和文本的行高,来计算文本显示的行数。 但在小程序中,微信并没有给 JS 访问文本行数或组件高度的接口。...最后的话 以上,总结下小程序下文本过长折叠的思路:文本过长由逻辑层判断字符数确定,控制「全文」按钮的展示与切换。...过长时应用 -webkit-line-clamp 样式折叠文本,再次展开文本只要撤销该样式。

1.4K50

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

在工作遇到上图所示的一个小需求,将“查看全部”的提示连在原文的后面,使用一个textview显示。...实现该功能大致步骤: 判断处理的文字是否超过最大的限制行数; 如果超过行数限制,截取掉超过的部分,并加上“...查看全部”; 然后用SpannableString将“查看全部”设置为蓝色,并且给整个textview...实现上述步骤的难点在于: 如何在setText()之前判断处理文字是否超过了最大的限制行数 如何获取超过限制行数最后一个文字的下标 解决以上两个问题需要用到一个处理TextView文本排版,拆行处理的工具类...Alignment align 对齐方式 TextDirectionHeuristic textDir 文本显示方向 float spacingmult 行间距倍数,默认是1 float spacingadd...content是行数是否超过最大限制行数3行 if (staticLayout.getLineCount()>maxLine) { //定义展开后的文本内容

4.2K82

禁止Google Adsense撑破父类 避免破坏手机网页样式

但在投放广告后发现,当访客使用手机访问时,Adsense自适应广告的宽度会展开为设备全宽。...也就是说,广告宽度超过了父元素的宽度,就像下图所示: 原本我们的网页设定了左右边距,使得内容更加整齐划一,看起来更加协调,但是Adsense广告自动展开到设备全宽,导致整个页面像是贴了许多牛皮癣广告...我尝试添加自定义CSS来限定广告的宽度,但失败了,因为广告代码是JS脚本,广告的元素和样式在JS加载并执行之后才能确定,因此自定义CSS无法起到作用。...经过搜索,我发现原来广告自动展开是谷歌刻意的行为: > 我们的实验显示,当移动设备处于纵向模式时,全宽的文章内嵌广告可取得更好的效果。...我们可以修改广告代码,禁止自适应广告在移动设备上自动展开至全宽。

37320

Spring Cloud Alibaba商城实战项目基础篇(day03)

/** * 是否显示[0-不显示,1显示],@TableLogic代表这是逻辑删除字段 */ @TableLogic(value = "1",delval = "0") private Integer...接着刷新菜单,再展开当前菜单,这个在删除时都做过了。直接copy即可。 5.1.5.6、修改菜单 想要实现修改功能,肯定要先添加修改按钮,这个修改按钮是任何时候都显示的,所以去掉v-if。...allowDrop(draggingNode, dropNode, type) { // 判断是否可以拖拽的核心是当前节点以及所在父节点的总层数不可以超过3 /// 1....,所以我们的判断条件应该拿到当前页面最新的值来计算最大深度,超过了3就无法拖拽。...node.childNodes[i]) } } }, allowDrop(draggingNode, dropNode, type) { // 判断是否可以拖拽的核心是当前节点以及所在父节点的总层数不可以超过

1.3K20

【Flutter 专题】137 图解自定义 ACEFoldTextView 折叠文本

,并在右下角显示展开】提示; 点击【展开】区域时,当文本内容最后一行内容与【展开】区域占据内容宽度之和小于最大宽度时,默认展示【收起】; 点击【展开】区域时,当文本内容最后一行内容与【展开】区域占据内容宽度之和大于等于最大宽度时...透明渐变【展开/收起】 和尚整体通过 Stack 层级嵌套方式在右下角显示可点击的【展开/收起】文本区,为了提高显示效果,并防止完全遮挡内容文本,和尚尝试了两种方式来实现颜色透明度渐变; 1.1...可以对子 Widget 进行颜色处理,包括遮罩层特效展示;和尚设置了一个 LinearGradient 线性渐变,但 ShaderMask 是对整个子 Widget 遮罩层生效,可能会影响 Text 文本显示效果...和尚之前也有简单了解过 TextPainter 与 TextSpan 的应用,主要用于文本的绘制,当设置 maxLines 之后,可以通过 didExceedMaxLines 判断文本内容是否已经超行...】所在 Widget 计算总和,之后判断是否占据超过限制最大宽度;当超过最大宽度时,和尚将文本添加一个 \n 强制换行; return LayoutBuilder(builder: (context,

1.1K20

动态监听DOM元素高度变化

他需要在内容不超过一个最大高度的时候完全显示所有内容,超过最大内容后仅展示最大高度范围内的内容,超出部分隐藏,并通过一个按钮 “展示更多” 来给用户展示更多的选择。...我们可以换一种思路,既然我们无法通过监听容器的高度变化来展示相应的 “展开更多” 操作,那么我们可不可以将这个 “展开更多” 固定到一个位置上,然后超出部分隐藏, 当我们的内容自动撑开,达到指定高度后,...我们这个 “展开更多” 的操作的按钮就显示出来了,听上去不错,能达到要求!...到 容器的最大高度之间, 按钮会产生显示一部分,同时又隐藏一部分的效果,这可不是我们想要的!...就是专门监听 DOM 尺寸变化的,只不过它还处于试验阶段,各浏览器的兼容性很差,所以基本不考虑 具体使用方法可以参考这篇文章:检测 DOM 尺寸变化 JS API ResizeObserver 简介

4.8K30

从龟速 11s 到闪电 1s,详解前端性能优化之首屏加载

在依赖不多的情况这么处理确实有助于提升加载速度,但一旦依赖多起来,vendor就会特别的大,在弱网条件下,会严重拖慢页面显示。...做判断 // main.js window.addEventListener('DOMContentLoaded', () => { const isSupportWebP = document.createElement...体积 内容(点击展开/收起) core-js实际上就是浏览器新API的polyfill,项目是PC端,所以主要是为了兼容IE......目前来看兼容性[5]方面也算过得去,在国内有超过50%的覆盖率。...一般来说不需要做特别处理,如果判断不需要或者需要调整在vue.config.js中配置即可 理论上prefetch不会影响加载速度,但实际测试中,是有轻微影响的,不过这个见仁见智,我认为总体体验上还是有所提升的

2.3K10

前端入门24-响应式布局(BootStrap)声明正文-响应式布局(BootStrap)

对于这个 的效果,我主要想理清楚两点: 展开和折叠是怎么实现的? 展开时那些列表是如何实现的?...那么,点击完按钮后,第一个 为什么会被展开了呢?...那么,展开之后的区域里的列表控件上,出现了一些例如:row,col-sm-8 之类的 class,这些又是什么意思呢?...所以 col-sm-8 表示当显示区域 >= 576px 时,该控件占据 8 列,所以,同一个控件里会出现诸如:col-sm-8 col-md-7 其实就是响应式布局处理,在不同显示区域大小时,呈现不同的大小...-4 生效,那么此时加起来一共 13 列,超过了 12 列,一行里已经不足够放这两个 了,根据 flex 的弹性布局,此时超过的会自动换行。

3.5K20

博客网页导致电脑CPU飙升的问题解决记录

展开 按照我个人经验,这种导致 CPU 爆卡的肯定是有什么死循环之类的 js 定时任务导致的。...于是按下 F12 瞄了下有没有异常代码,结果一眼就瞄到了很久之前加入的防止镜像的 img+js 代码【相关文章】: 几乎本能的确定就是这个代码导致的,这段代码的防镜像原理是指定 img 为错误的 src...地址,然后触发 onerror 错误事件来进行域名判断的,这个过程应该是个死循环,也就是不断的产生 onerror 事件和域名判断,从而带来了 CPU 飙升问题。...下面给出一个带重试次数,并且延迟加载的实现,超过重试次数仍不能正常显示的,显示缺省图片。...超过重试次数仍不能正常显示的,显示缺省图片。

1.5K90

快速搭建一个代码在线编辑预览工具(实战)

1.基本数据类型 基本数据类型只要都转成字符串显示出来就可以了,无非是使用颜色区分一下: // /public/console/index.js // ......,也就是带高亮、带缩进,以及支持展开收缩。...,展开和收缩操作的是wrap元素的高度,收缩时同时插入一个省略号的元素来表示此处存在收缩,同时因为按钮使用绝对定位,脱离了正常文档流,所以也需要手动控制它的显示与隐藏,需要注意的是要能区分哪些按钮是本次可以操作的...ellipsisEl = getChildByClassName(parent, 'ellipsis') parent.removeChild(ellipsisEl) // 显示下级展开收缩按钮...image-20210512135732215.png 可以判断第一个参数是否是字符串,以及是否包含占位符,如果包含了,那么就判断是什么占位符,然后取出后面对应位置的参数进行格式化,没有用到的参数也不能丢弃

4.4K30

快速搭建一个代码在线编辑预览工具

1.基本数据类型 基本数据类型只要都转成字符串显示出来就可以了,无非是使用颜色区分一下: // /public/console/index.js // ......,也就是带高亮、带缩进,以及支持展开收缩。...,展开和收缩操作的是wrap元素的高度,收缩时同时插入一个省略号的元素来表示此处存在收缩,同时因为按钮使用绝对定位,脱离了正常文档流,所以也需要手动控制它的显示与隐藏,需要注意的是要能区分哪些按钮是本次可以操作的...ellipsisEl = getChildByClassName(parent, 'ellipsis') parent.removeChild(ellipsisEl) // 显示下级展开收缩按钮...,以及是否包含占位符,如果包含了,那么就判断是什么占位符,然后取出后面对应位置的参数进行格式化,没有用到的参数也不能丢弃,仍然需要显示: const handleArgs = (method, contents

4K20

Webpack 性能系列四:分包优化

资源请求数,下文会细讲❞ 综上,分包逻辑基本上都围绕着 Module 与 Chunk 展开,在介绍具体用法之前,有必要回顾一下 Chunk 的基础知识。...entry-b.js async-module.js commont.js 2.2.2 限制分包数量 在满足 minChunks 基础上,还可以通过 maxInitialRequest/maxAsyncRequests...则取消这次分包,对应的 Module 依然会被合并入原来的 Chunk 如果 Chunk 体积「大于」 minSize 则判断是否超过 maxSize、maxAsyncSize、maxInitialSize...但对于使用频率并不高的第三方库,就需要按实际情况灵活判断,例如项目中只有某个页面 A 接入了 Three.js,如果将这个库跟其它依赖打包在一起,那用户在访问其它页面的时候都需要加载 Three.js,...最终效果可能反而得不偿失,这个时候可以尝试使用异步加载功能将 Three.js 独立分包 「保持按路由分包,减少首屏资源负载」 设想一个超过 10 个页面的应用,假如将这些页面代码全部打包在一起,那么用户访问其中任意一个页面都需要等待其余

3.6K10
领券