如何在多行文本视图的最后一个字符后面放置图标

问题描述 投票:0回答:1

我想在(可能的)多行 TextView 的最后一个单词之后找到一个视图。

例如,TextView 可能有两行,第二行的长度约为 TextView 宽度的一半。如何在最后一个单词之后找到视图。

我还想在该图标上附加一个点击侦听器。我正在使用数据绑定。
我尝试过 Spannabale 字符串。

android kotlin textview android-databinding
1个回答
0
投票

试试这个:

    val targetText = "A quick brown fox jumps over \n the lazy dog"
    val text: SpannableStringBuilder = SpannableStringBuilder(targetText)

    val drawable: Drawable = ContextCompat.getDrawable(this, R.mipmap.ic_launcher)!!
    drawable.setBounds(0, 0, 50, 50)

    //ImageSpan.ALIGN_BASELINE; ImageSpan.ALIGN_BOTTOM; ImageSpan.ALIGN_CENTER;
    val imageSpan: ImageSpan = ImageSpan(drawable, ImageSpan.ALIGN_BASELINE)

    val clickSpan: ClickableSpan = object : ClickableSpan() {
        override fun onClick(widget: View) {
            Toast.makeText(this@TestActivity, "click icon", Toast.LENGTH_SHORT).show()
        }
    }

    val len: Int = text.length
    text.append("\uFFFC")
    text.setSpan(imageSpan, len, text.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
    text.setSpan(clickSpan, len, text.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)

    mViewBinding.tv.highlightColor = ContextCompat.getColor(this, android.R.color.transparent)
    mViewBinding.tv.movementMethod = LinkMovementMethod.getInstance()
    mViewBinding.tv.text = text

    mViewBinding.tv.setOnClickListener {
        Toast.makeText(this@TestActivity, "click text", Toast.LENGTH_SHORT).show()
    }

然后你可以得到: image

这是你的愿望吗?

© www.soinside.com 2019 - 2024. All rights reserved.