EmojiAppCompatTextView带有省略号和表情符号,之后无法正常工作

时间:2018-04-10 11:37:29

标签: android textview emoji

我有一个EmojiAppCompatTextView,其中maxLines设置为2,省略号设置为end,但如果在省略号之后有一个表情符号,它仍会将省略号放在表情符号之后并使文本在两侧切断,因为表情符号没有足够的空间。

似乎是EmojiAppCompatTextView中的固有错误,但也许有办法解决它......

它应该如何显示(省略号工作正常之前的表情符号):

emoji before ellipsis

它实际上看起来如何

emoji after ellipsis

任何想法?

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"/>

1 个答案:

答案 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。