我不知道如何使TextView上的特定文本变成粗体。

是这样的

txtResult.setText(id+" "+name);

我希望输出是这样的:

1111年尼尔

id和名称是我从数据库中检索值的变量,我想将id改为粗体,但只有id,所以名称不会受到影响,我不知道如何做到这一点。


当前回答

简单的例子

在you strings.xml中

<string name="str_privacy_policy">This is our Privacy Policy.</string>

如果你想让“隐私政策”特别加粗,就在加粗标签之间加字符串。

像这样

<string name="str_privacy_policy">This is our <b>Privacy Policy.</b></string>

结果是

这是我们的隐私政策

其他回答

字符串资源

<resources>
   <string name="your_string_resource_name">This is normal text<![CDATA[<b> but this is bold </b>]]> and <![CDATA[<u> but this is underline text</u>]]></string>
</resources> 

您的Java类

yourtextView.setText(getString(R.string.your_string_resource_name));

找到了一种方法,如果你想处理多种语言的本地化,这很无聊,但它是有效的,让我们假设我们想要这样:

英文:

没有付款记录

西班牙语:

没有付款记录

你必须创建3个字符串

中文:

<string name="start_string">There are no</string>
<string name="middle_string">payments</string>
<string name="end_string">registered.</string>
<string name="string_format" translatable="false">%1$s %2$s %3$s</string>

西班牙语:

<string name="start_string">No hay</string>
<string name="middle_string">pagos</string>
<string name="end_string">registrados</string>

现在你可以这样做:

val startSpanPosition = getString(R.string.start_string).length
val endSpanPosition = startSpanPosition + getString(R.string.middle_string).length
val mySpannableString = SpannableStringBuilder(String.format(getString(R.string.string_format),
        getString(R.string.start_string), getString(R.string.middle_string))), getString(R.string.end_string)))

mySpannableString.setSpan(StyleSpan(Typeface.BOLD), spanStartPosition, endSpanPosition, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)

简单的例子

在you strings.xml中

<string name="str_privacy_policy">This is our Privacy Policy.</string>

如果你想让“隐私政策”特别加粗,就在加粗标签之间加字符串。

像这样

<string name="str_privacy_policy">This is our <b>Privacy Policy.</b></string>

结果是

这是我们的隐私政策

如果你正在使用Kotlin和string资源,一个简单的解决方案是:

在strings.xml上创建你的字符串,使用<b> </b>加粗你想要的部分

<string name="my_message"> This is a very <b>important</b> message! </string>

在Kotlin代码中,你必须这样做

textView.setText(R.string.my_message)

就是这样!


重要提示!

使用属性语法将不起作用:

textView.text = resources.getString(R.string.my_message)

希望能有所帮助!

您可以在构建器中分别添加这两个字符串,其中一个是spannedString,另一个是常规字符串。这样就不需要计算下标了。

val instructionPress = resources?.getString(R.string.settings_press)

val okText = resources?.getString(R.string.ok)
val spannableString = SpannableString(okText)

val spannableBuilder = SpannableStringBuilder()
spannableBuilder.append(instructionPress)
spannableBuilder.append(spannableString, StyleSpan(Typeface.BOLD), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)

instructionText.setText(spannableBuilder,TextView.BufferType.SPANNABLE)