我有一个可以更改值的文本视图。例如,它是压力。它可以有不同的长度 - 即 999.1 或 1010.2 hPa。
文本如下所示:
我需要为文本的第一部分(数字 - 1024.12)和文本的第二部分(测量单位)设置不同的文本样式。
到目前为止,我已经尝试过:
使用 SpannableString 并将跨度设置为相同的可扫描字符串。
创建两个可扫描字符串,分别设置它们的跨度,连接两个可扫描字符串并将连接的可扫描字符串设置为文本到文本视图:
//the value of measurement
val spannable1 = SpannableString(button.customView.tvBottom.text.split(" ")[0])
//the unit of measurement
val spannable2 = SpannableString(button.customView.tvBottom.text.split(" ")[1])
spannable1.setSpan(R.style. Bold20Dark, 0, spannable1.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
spannable2.setSpan(R.style. Regular12Dark, 0, spannable2.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
val spannableString = spannable1.toString() + spannable2.toString()
button.customView.tvBottom.setText(spannableString)
阻止我的是数字及其长度的动态变化,所以如果它不断变化,我无法弄清楚如何设置一个稳定的范围。
不同的文本样式是指以下样式:
<style name="Bold20Dark">
<item name="android:textSize">20sp</item>
<item name="android:lineSpacingExtra">3sp</item>
<item name="android:textColor">@color/dark</item>
<item name="android:fontFamily">@font/fonr_bold</item>
</style>
<style name="Regular12Dark">
<item name="android:gravity">center_horizontal</item>
<item name="android:textSize">12sp</item>
<item name="android:lineSpacingExtra">4sp</item>
<item name="android:fontFamily">@font/font_regular</item>
<item name="android:textColor">@color/grey</item>
</style>
如果范围是可变的,有没有办法设置两种文本样式?谢谢你。