有点复杂的消息布局

我有一个非常有趣的问题。 我应该像电报那样对短信进行布局,但只能用文本。 所以如果消息文本占用多于一行的话,我应该稍微移一点时间戳。 我做了2个textView的布局(一个用于单行消息和其他多行,你可以看到我的布局在附加)

我的问题是,当我显示时间戳多行的情况下,所有列表一个小小的跳跃(因为高度的观点改变)在这里我的代码从我的viewHolder(我使用kotlin,但它仍然非常明显)。 主要的问题是 – 如何在渲染之前在textView中计算行数?

val date = stamp.toString(Constants.DEFAULT_TIME_FORMAT) textViewItemMessageText.text = text textViewItemMessageTimeForSingleLine.show() textViewItemMessageTime.hide() textViewItemMessageTimeForSingleLine.text = date textViewItemMessageText.post { if (textViewItemMessageText.lineCount > 1) { textViewItemMessageTimeForSingleLine.hide() textViewItemMessageTime.show() textViewItemMessageTime.text = date }          

正如在这篇文章中提到的,

getLineCount()只会在布局过后给你正确的行数。

这意味着您需要在调用getLineCount()方法之前先渲染TextView。

在android中textview.getLineCount总是0

你可以find更多的信息,你想在这里实现: WhatsApp的消息布局 – 如何获得同一行的时间观