android - 如何在 TextView 中跨越多个字符串?

标签 android textview spannablestring

我尝试使用此代码创建一个带有字符串“abcde”的 TextView,其中“b”和“d”具有跨度:

private void testStringSpanning(TextView tv)
{
    // blue
    ForegroundColorSpan fcs = new ForegroundColorSpan( Color.BLUE );

    SpannableString  a = new SpannableString( "a" );
    SpannableString  b = new SpannableString( "b" );    
    b.setSpan( fcs, 0, 1, Spannable.SPAN_INCLUSIVE_INCLUSIVE );
    SpannableString  c = new SpannableString( "c" );
    SpannableString  d = new SpannableString( "d" );    
    d.setSpan( fcs, 0, 1, Spannable.SPAN_INCLUSIVE_INCLUSIVE );
    SpannableString  e = new SpannableString( "e" );

    SpannableStringBuilder builder = new SpannableStringBuilder();
    builder.append(a);
    builder.append(b);
    builder.append(c);
    builder.append(d);
    builder.append(e);

    tv.setText( builder, BufferType.SPANNABLE);
}

结果不是我想要的。 a、c 和 e 应该是纯白色,b d 应该是蓝色。

我做错了什么?

result string with 'a' in plain white and 'bdce' in blue

最佳答案

试试这个:

ForegroundColorSpan fcs = new ForegroundColorSpan( Color.BLUE );

//your strings in case you have most than one
String str1 = new String("a");
String str2 = new String("b");
String str3 = new String("c");
String str4 = new String("d");

//or a single one str = new String ("abcd")

//set all to on a TV
TextView string =(TextView)findViewById(R.id.tvString);
string.setText( str1 + str2 + str3 + str4, TextView.BufferType.SPANNABLE );

//convert all string y a single SpannableString
SpannableString s = (SpannableString)string.getText();

//This variables hepl you counting large strings
int str1_lenght = str1.length();
int str2_lenght = srt2.length();
int str3_lenght = srt3.length();
int str4_lenght = srt4.length();

//setting color on an specific string
s.setSpan(fcs, str1_lenght, str1_lenght + str2_lenght, 0);
s.setSpan(fcs, str1_lenght + str2_lenght + str3_lenght, str1_lenght + str2_lenght + str3_lenght + str4_lenght, 0);

关于android - 如何在 TextView 中跨越多个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12149101/

相关文章:

android - 我如何在不丢失其标记属性的情况下将 SpannableString 交换为 String?

android - 将字符串中的字符替换为Image,然后设置为Textview

java - Eclipse OnErrorListener 无法解析为类型

具有自定义对象的 Android 自定义 ArrayAdapter

java - 更改自定义适配器中按钮的可见性

android - 如何更改 TextView 中链接的前景色/背景色?

Android NDK Native 方法未找到错误

java - 使 TextView 变暗?

android - 如何以编程方式更改 ListView 内 TextView 的背景颜色?

android - 如何实现类似 Facebook Messenger/Google Hangouts 的布局以在 ANDROID 的搜索栏中预览所选项目?