Android 动态设置TextView line 问题

今天在处理一个 TextView 文本过长,需要添加一个 ”展开全文“,和 ”收起更多“ 的功能

类似这样的

image.png

在处理代码的时候,首先要先给 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
            }

你可能感兴趣的:(Android 动态设置TextView line 问题)