Android:如何在一个 TextView 中组合文本和图标

标签 android textview

您好,我可以按任意顺序将普通文本与粗体文本和图像组合在一起吗? enter image description here

谢谢!

最佳答案

一种方法是使用 SpannableStringBuilder。要添加粗体文本,您可以这样做:

        val text = SpannableStringBuilder()
            .append("В программе")
            .append(" ")
            .bold { append("Телефон") }

要添加图像,您可以使用这样的 hand cook 扩展(我只为 DrawableRes 为您编写):

    fun SpannableStringBuilder.drawable(
        tv: TextView,
        @DrawableRes drawable: Int,
    ): SpannableStringBuilder {
        val icon = ContextCompat.getDrawable(tv.context, drawable)!!
        icon.setBounds(0, 0, tv.lineHeight, tv.lineHeight)
        return inSpans(ImageSpan(icon, DynamicDrawableSpan.ALIGN_BOTTOM)) { append("$drawable") }
    }

因此,您的第一个带图像的字符串的最终代码将如下所示:

val text = SpannableStringBuilder()
    .append("В программе")
    .append(" ")
    .bold { append("Телефон") }
    .append(" ")
    .drawable(binding.tv, R.drawable.telephone)
    .append(" ")
    .append("нажмите")
    .append(" ")
    .bold { append("недавние") }
    .append(" ")
    .drawable(binding.tv, R.drawable.clock)

binding.tv.text = text

关于Android:如何在一个 TextView 中组合文本和图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66424760/

相关文章:

Android:位图的 LruCache 问题

android - .so 文件创建期间的链接器错误。错误 : Function not Implemented

android - Ionic CSS 动画在 Android 设备上不起作用

java - Android 复选框 Listview 回收导致意外的框检查

Android - TextView 滚动

java - 如何修复 : com. android.support :animated-vector-drawable:28. 0.0 中使用的包名称 'android.support.graphics.drawable'

android - 更改 TextView 中一个单词的文本颜色

ios - 选择 DatePicker 后更新单元格中的日期(时间)

android - 如何从内容 ://mms. 中检索彩信的日期

android - 通过用户选择增加和减小 android 应用程序的字体大小