我需要一个自定义文本视图来在最后一行显示时间。时间应与所有消息的右侧对齐。如果最后一行没有空格,则时间移到下面。是否有库可以实现此功能?或者自己怎么做?
假设这是您的 xml 中的 TextView :
<TextView
android:id="@+id/textMain"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_margin="16dp"/>
您可以通过进行一些计算和检查宽度来实现这一点,这是一个示例函数,您可以将其传递给正文和时间戳
private fun updateText(mainText: String, timestamp: String) {
val fullText = "$mainText $timestamp"
textViewMain.text = fullText
textViewMain.post {
val layout = textViewMain.layout ?: return@post
val textWidth = layout.getLineWidth(layout.lineCount - 1)
val timestampWidth = textViewMain.paint.measureText(timestamp)
if (textWidth + timestampWidth > textViewMain.width) {
// Not enough space to fit on one line, put timestamp on a new line
val newText = "$mainText\n$timestamp"
val spannable = SpannableString(newText)
spannable.setSpan(RelativeSizeSpan(0.9f), newText.length - timestamp.length, newText.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
textViewMain.text = spannable
}
}
}