首页 > 解决方案 > 无法在 Android Studio 中格式化部分 TextView 或 Button 文本

问题描述

我正在使用 Android Studio 创建一个英语学习应用程序,我想在按钮上加几个字母,但我做不到。例如,我希望按钮显示“我喜欢bas ketball”,因为当我们发音这个词时,篮球中的第一个音节会被强调。

但是我不能让它工作。这是我的strings.xml。

<string name="test">I like <b>bas</b>ketball</string>

这是我的activity.xml。

    <Button
        android:id="@+id/test"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/test"
        android:textAllCaps="false" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@+string/test"
        android:textAllCaps="false" />

</LinearLayout>

Button 和 TextView 都无法识别格式。

我将有 400 多个按钮,这些按钮需要一组不同的字符加粗,所以我不想使用可扩展的字符串来编码。

有简单的解决方案吗?

标签: androidxmlstring

解决方案


第一种方法-

<string name="test">I like &lt;b> bas&lt;/b>ketball.</string>如果您使用 String.xml 中的字符串,则需要将字符串更新为

但您需要在 Activity 类中添加以下代码才能工作 -

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
     textView.setText(Html.fromHtml(getString(R.string.test), Html.FROM_HTML_MODE_LEGACY));
}else{
    textView.setText(Html.fromHtml(getString(R.string.test));
}

第二种方法-

String.xml在顶部的文件中添加以下代码

<?xml version="1.0" encoding="utf-8"?>

然后在资源中添加你的字符串 -

<resources>
    <string name="test"><![CDATA[I like <b> bas</b>ketball]]></string>
</resources>

然后在活动类中设置如下HTML文本 -

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
     textView.setText(Html.fromHtml(getString(R.string.test), Html.FROM_HTML_MODE_LEGACY));
}else{
    textView.setText(Html.fromHtml(getString(R.string.test));
}

希望这会有所帮助。


推荐阅读