java - 仅以编程方式更改 TextView 中某些文本的背景颜色

标签 java android xml textview

如何仅使用尽可能少的代码行以编程方式更改 View 中某些文本的背景?我尝试在 html 中使用背景标签,但不幸的是它不支持该标签,因此是否有任何可能的解决方法来实现如下图所示的效果?

XML

<TextView
    android:id="@+id/main_textView0"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    style="@android:style/TextAppearance.Medium"/>

Java

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    View v = getView();

    TextView txt = (TextView)v.findViewById(R.id.main_textView0);
    txt.setText(Html.fromHtml("<font color='#0099CC'>" + getResources().getString(R.string.hello) + "</font>" +
                    " " +
                    "<font color='#000000'>" + getResources().getString(R.string.world) + "</font>"
    ));

    super.onActivityCreated(savedInstanceState);
}

enter image description here

最佳答案

尝试 Spannable ,类似于:

            String str1 = "Hello";
            String str2 = "world";
            String message = str1 + " " + str2;

            Spannable spannable = new SpannableString(message);
            spannable.setSpan(new ForegroundColorSpan(Color.BLUE),0, str1.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

            textView.setText(spannable);

关于java - 仅以编程方式更改 TextView 中某些文本的背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31361540/

相关文章:

java - 奇怪的 fragment 生命周期行为 : onCreate called twice

java - 如何在 Java 中向文本字段添加 Action 监听器

java - 使用反射打印列表

xml - 安全命名空间不支持元素 [custom-filter] 的修饰

java - 将 csv 文件上传到 ftp,无需在本地创建物理文件

Android:如何以编程方式检测私有(private)号码

android - 刷新 RecyclerView 中的数据并保持其滚动位置

android - Libgdx 是否适用于 virtualbox 和 android x86?

java - 我的应用程序崩溃了。不幸的是应用程序已停止

java - Backstack中找不到从xml添加的 fragment