我需要你的帮助来制作颜色功能。我想创造这样的东西
我有一个edittext
并且我想输入字符串的颜色部分,但是有一个特殊的输入示例:
if the user type : ^1Hi ^2Stack^3Over^4Flow !
"Hi" = red color , "Stack" = green color , "Over" = blue color and "Flow" = orange color.
这个怎么做?
您可以使用 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);
您可以尝试以下操作:
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));
您必须使用带有分隔符“^”的 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 也是。
编写一个函数,接收整个字符串并将其切割成单独的单词(用空格分隔),并通过计数器++为每个单词赋予颜色。