Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建颜色函数_Java_Android_Input_Colors - Fatal编程技术网

Java 创建颜色函数

Java 创建颜色函数,java,android,input,colors,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. 如何做到这一点?编写一个函数,该函数接收整个字符串并将其切割成单独的单词(用空格分隔),并通

我需要你的帮助来制作一个颜色函数。 我想创造这样的东西

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

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

如何做到这一点?

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

您可以使用可扩展字符串来实现这一点:

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);

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

编辑: 像这样创建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也是。

您可以尝试以下操作:

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));
String styledText=“这是Hi”+“+”堆栈“+”+”在“+”+”流之上;
setText(Html.fromHtml(styledText));

你需要解析这些文本并用html标记替换它我已经在这篇文章上看过了,但我不知道如何知道符号“^”是否已经输入,谢谢你能给我一个简单的例子吗?我看过android doc,但我不确定是否真的明白:你能再解释一下吗?你能重新制作一个例子吗?请务必取消理解:请输入“^x”x=确定颜色的编号:)x=颜色,y=字符串x;y^x;y1^x1;y2您必须先使用带分隔符“^”的StringTokenizer,然后再使用“;”。我有点难以理解。好的,您能用您的示例向我发布一个代码吗?您尝试过我发布的代码吗?我用上面的例子附上了截图。更改为白色->黄色,因为白色上的白色不可见。太好了!但是怎么办呢?你用输入的^x=number来做吗?我搞不懂?你是什么意思?很好的复制粘贴答案hehehe@Selvin,这是从我的代码中提取的,可能是在我刚接触android时,我参考了您在评论中发布的链接。它工作得很好,但我必须用输入^x分隔ecah world以指定颜色;)您可以检查^并进行相应的分析。