Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.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_Styles_Themes - Fatal编程技术网

Java 更改编辑文本样式中包含的每个单词

Java 更改编辑文本样式中包含的每个单词,java,android,styles,themes,Java,Android,Styles,Themes,如何在编辑文本中为所有(日期:)单词设置样式? 如果假设内容是: textView.setText("Date : " + obj.getDate() + "\n" + "Date : " + obj2.getDate()); 我知道我们可以在Textview中包含的字符串的一个索引到另一个索引之间操纵某种样式。该代码给出的示例仅更改一个单词 并非所有(日期:)单词都已更改: TextView textView = (TextView)findViewById( R.id.TextView )

如何在编辑文本中为所有(日期:)单词设置样式? 如果假设内容是:

textView.setText("Date : " + obj.getDate() + "\n" + "Date : " + obj2.getDate());
我知道我们可以在Textview中包含的字符串的一个索引到另一个索引之间操纵某种样式。该代码给出的示例仅更改一个单词

并非所有(日期:)单词都已更改:

TextView textView = (TextView)findViewById( R.id.TextView );
Spannable spannable = (Spannable)textView.getText();
StyleSpan boldSpan = new StyleSpan( Typeface.BOLD );
spannable.setSpan( boldSpan, 0, 6, Spannable.SPAN_INCLUSIVE_INCLUSIVE );
连同布局(XML)中规定的重要参数spannable



如何在编辑文本中为所有(日期:)单词设置样式?

您可以使用
[TextUtils.concat(Charsequence…)][1]
跨栏串接起来,如下所示:

SpannableString span1 = new SpannableString(Date :);
SpannableString span2 = new SpannableString(obj.getDate());

span1.setSpan(new ForegroundColorSpan(Color.BLUE), 0, span1.length() -1, 0))
span2.setSpan(new ForegroundColorSpan(Color.RED), 0, span1.length() -1, 0))

mTextView.setText(TextUtils.concat(span1," " ,span2)); 
没有尝试过代码,但应该非常简单:

TextView textView = (TextView)findViewById( R.id.TextView );
SpannableString date = new SpannableString("Date: ");

StyleSpan boldSpan = new StyleSpan( Typeface.BOLD );
spannable.setSpan(boldSpan, 0, span1.length() -1, Spannable.SPAN_INCLUSIVE_INCLUSIVE);

textView.setText(TextUtils.concat(date, obj.getDate(), "/n", date, obj2.getDate()));

创建一些帮助函数来格式化日期,比如

public static CharSequence getDateString(Date date){
    Spannable text = new SpannableString("Date : "+ date.toString());
    StyleSpan boldSpan = new StyleSpan(Typeface.BOLD);
    text.setSpan(boldSpan,0,text.length(),Spannable.SPAN_INCLUSIVE_INCLUSIVE);
    return text;
}
然后使用TextUtils连接文本,然后设置

 tv.setText(TextUtils.concat(tv.getText(), getDateString(new Date()),"\n", new Date().toString()));

你的意思是当你用edittext写一篇文章时,它会改变日期的颜色?你能发布你想要的图片吗?我想更改每个“日期”的颜色:“text@Rod_Algonquin…”。。。在EditText组件中。请向我解释为什么在两个span上都使用span1.length()@RawasetSpan的工作原理如下:spannableString.setSpan(,,0))如果您想为整个字符串着色,请将其从0应用到最后一个字符,长度为-1。基本思想是按照您希望的方式设置字符串的样式,然后在将其应用到textview之前将其与TextUtils.concat连接。更新了我的答案,以获得更具体的解决方案。希望有帮助,如果有,请接受我的回答:)
 tv.setText(TextUtils.concat(tv.getText(), getDateString(new Date()),"\n", new Date().toString()));