如何创建具有两种颜色文本的文本视图?

how can i create a textview with two color text?

我想创建一个 TextView 并有两个文本或两个颜色的文本...

我创造了这个;

我希望样品店的颜色变为红色,搜索范围为蓝色...

我的xml代码:

    <TextView
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:layout_marginLeft="5dp"
    android:layout_marginTop="5dp"
    android:layout_marginRight="5dp"
    android:layout_marginBottom="5dp"
    android:background="@drawable/search_bg"
    android:drawableRight="@drawable/search"
    android:drawableTint="@color/day_dark_blue"
    android:paddingRight="15dp"
    android:gravity="center"
    android:layout_gravity="center|center_vertical"
    android:text="search in Sample Shop"
    android:textColor="@color/day_dark_blue"
    android:textSize="18sp" />

您可以尝试使用 SpannableString

// in the .kt file
val spannable = SpannableString("search in the Sample Shop")
    
spannable.setSpan(
     ForegroundColorSpan(Color.RED), 
     10, 20, 
     Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)

// 10, 20: start and end index of Sample Shop

myTextView.text = spannable

一篇有用的文章:Spantastic text styling with Spans

您可以使用 SpannableString 实现同样的效果。

TextView TV = (TextView)findViewById(R.id.textView);

Spannable wordtoSpan = new SpannableString("search in Sample Shop");        

wordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), 0, 9, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

wordtoSpan.setSpan(new ForegroundColorSpan(Color.RED), 10, 21, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

TV.setText(wordtoSpan);