我有一个EmojiAppCompatTextView,其中maxLines设置为2,省略号设置为end,但如果在省略号之后有一个表情符号,它仍会将省略号放在表情符号之后并使文本在两侧切断,因为表情符号没有足够的空间。
似乎是EmojiAppCompatTextView中的固有错误,但也许有办法解决它......
它应该如何显示(省略号工作正常之前的表情符号):
它实际上看起来如何
任何想法?
textviews xml for good measure:
<android.support.text.emoji.widget.EmojiAppCompatTextView
android:id="@+id/description"
app:fontPath="fonts/Lato-LightItalic.ttf"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:ellipsize="end"
android:maxLines="2"
android:textAlignment="center"
android:textSize="13sp"/>
答案 0 :(得分:0)
这是一个很老的问题,但这可能会像我一样帮助在这里的人:)
在初始化布局时,请输入以下内容:
tv_message?.viewTreeObserver?.addOnGlobalLayoutListener { fixEmojiAfterEllipses() }
并在布局短语后对其进行修复:
@SuppressLint("SetTextI18n")
private fun fixEmojiAfterEllipses() {
tv_message?.let {
val count = it.layout?.getEllipsisCount(0) ?: 0
if (count > 0) {
it.text = "${it.text.substring(0, it.text.length - count)}..."
}
}
}
这可能会给您一些思路,以解决您的情况……请不要忘记将参数更改为getEllipsesCount。