【问题标题】:EmojiAppCompatTextView with an ellipsis and an emoji afterwards not working properly带有省略号和表情符号的 EmojiAppCompatTextView 之后无法正常工作
【发布时间】:2019-03-13 21:17:19
【问题描述】:

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

似乎是 EmojiAppCompatTextView 中的一个固有错误,但也许有办法修复它...

它应该是什么样子(省略号之前的表情符号可以正常工作):

实际的样子

有什么想法吗?

textviews xml 是很好的衡量标准:

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

【问题讨论】:

    标签: android textview emoji


    【解决方案1】:

    这是一个相当老的问题,但这可能会帮助像我一样在这里的人:)

    在初始化布局时输入:

    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。

    【讨论】:

      猜你喜欢
      • 2020-03-10
      • 1970-01-01
      • 2012-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      相关资源
      最近更新 更多