更改EditText样式中包含的每个单词

时间:2014-08-07 19:29:24

标签: java android styles themes

如何使用EditText为所有(日期:)字词设置样式? 如果说内容是:

textView.setText("Date : " + obj.getDate() + "\n" + "Date : " + obj2.getDate());

我确实理解我们可以将某个样式从一个索引操作到Textview中包含的String的另一个索引。此代码给出的示例仅更改一个单词。

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

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

    <TextView android:layout_width="fill_parent" android:id="@+id/TextView"
        android:bufferType="spannable" android:layout_height="wrap_content"
        android:text="@string/hello" />

如何为所有(日期:)字词设置一个样式,而不是使用EditText?

2 个答案:

答案 0 :(得分:0)

您可以使用SpannableString连接[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)); 

Havn没有尝试过代码,但它应该非常直接:

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

答案 1 :(得分:0)

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

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