今天在处理一个 TextView 文本过长,需要添加一个 ”展开全文“,和 ”收起更多“ 的功能
类似这样的:
在处理代码的时候,首先要先给 TextView 设置内容, 然后才能判断是否需要显示 ”展开全部“ 的标签,
那么这里就有第一个问题了:
- 填充文本之后,获取到的
TextView linesCount
一直为 0
解决方法:
textView.post {
// 在这里去获取 textView 的 linesCount
val lines = textView.lineCount // lines 才会有值,
// 然后再是根据当前的 lines 去初始化展开状态,
if (lines > 3) {
..... // 执行一些操作.
}
}
初始化展开状态完成后,我们需要通过点击事件去改变 文本的显示状态,是否展开,
这个时候,就有第二个问题了,
- setLines 或者 maxLines 不好用,
解决方法:
不能通过 textView.getLinesCount 来作为条件,条件无效,
必须要通过 自己去定义一个 isExpand 标识,来作为是否展开的条件,
另外,设置展开
和收起
的方法还不一样:
if (text == "收起更多") {
newLine = 3
tvExpand.text = "展开更多"
tvDesc.setLines(newLine)
} else {
newLine = Int.MAX_VALUE
tvExpand.text = "收起更多"
tvDesc.maxLines = newLine
}
网友评论