0

我需要你的帮助来制作颜色功能。我想创造这样的东西

我有一个edittext并且我想输入字符串的颜色部分,但是有一个特殊的输入示例:

if the user type : ^1Hi ^2Stack^3Over^4Flow !
"Hi" = red color , "Stack" = green color , "Over" = blue color and "Flow" = orange color.

这个怎么做?

4

4 回答 4

2

在此处输入图像描述您可以使用 Spannable 字符串来实现此目的:

SpannableStringBuilder builder = new SpannableStringBuilder();

String red = "RedText";
SpannableString str1= new SpannableString(red);
str1.setSpan(new ForegroundColorSpan(Color.RED), 0, red.length(), 0);
builder.append(str1);

String white = "WhiteText";
SpannableString str2= new SpannableString(white);
str2.setSpan(new ForegroundColorSpan(Color.WHITE), 0, white.length(), 0);
builder.append(str2);

String blue = "BlueText";
SpannableString str3 = new SpannableString(blue);
str3.setSpan(new ForegroundColorSpan(Color.BLUE), 0, blue.length(), 0);
builder.append(str3);

mTextView.setText(builder, BufferType.SPANNABLE);
于 2013-08-27T13:20:19.363 回答
1

您可以尝试以下操作:

String styledText = "This is <font color='red'>Hi</font>"+" "+"<font color='green'>Stack</font>"+" "+"<font color='blue'>Over</font>"+" "+"<font color='orange'>Flow</font>";

textview.setText(Html.fromHtml(styledText));
于 2013-08-27T13:28:58.950 回答
0

您必须使用带有分隔符“^”的 StringTokenizer 类,然后必须从每个单词中获取第一个字符。此数字可以是您的颜色数组中的索引,例如 List

编辑:像这样创建 stringTokenizer

StringTokenizer sT = new StringTokenizer(yourString, "^");

while(sT.hasMoreTokens()) {
String myColorString = sT.nextToken();
int color = myColorString.charAt(0);
String text = myColorString.substring(1, myColorString.length-1);
}

然后您可以通过颜色变量获取颜色并为您的字符串文本着色:)。

当您的数字超过 2 个字符时,您可以使用正则表达式,但是当您希望在要着色的字符串的开头有数字时会出现问题:);

我认为制作这样的东西会更好 1;myString^2;myString2^3;myString3

并且您可以对每个数字使用字符串标记器;myString 也是。

于 2013-08-27T13:22:08.017 回答
-2

编写一个函数,接收整个字符串并将其切割成单独的单词(用空格分隔),并通过计数器++为每个单词赋予颜色。

于 2013-08-27T13:16:44.430 回答