创建颜色功能

时间:2013-08-27 13:12:08

标签: java android input colors

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

我有一个edittext,我想把字符串的颜色部分放入,但是有一个特殊的输入 例如:

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

怎么做?

4 个答案:

答案 0 :(得分:2)

enter image description here您可以使用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);

答案 1 :(得分: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));

答案 2 :(得分: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);
}

然后你可以通过颜色变量获得颜色并为你的String文本着色:)。

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

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

你可以为每个数字使用字符串标记器; myString也可以。

答案 3 :(得分:-2)

编写一个函数,接收整个String并将其剪切为单独的单词(由空格分隔),并通过计数器++给每个单词一个颜色。