如何在不更改整个textview颜色的情况下更改文本颜色

时间:2018-11-17 02:52:04

标签: java android eclipse

我试图通过简单地单击按钮来更改文本颜色,但是当我单击按钮时,它也会更改以前键入的文本颜色。表示更改整个文本的颜色。当我尝试通过Spannable更改颜色时,它将更改文本所选部分的颜色,但不会更改我接下来要键入的文本的颜色。有没有一种方法可以单击按钮,它不会更改整个文本的颜色,而是会改变我接下来键入的颜色。谢谢

enter image description here

这是我唯一知道的

redtxt.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View view) {
            str.setSpan(new ForegroundColorSpan(Color.parseColor(txtColor)),     selStart, selEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
               text.setTextColor(Color.parseColor("#d32f2f"));
       }
   });

3 个答案:

答案 0 :(得分:0)

例如,您可以使用SpannableString

final SpannableString text = new SpannableString("Hello stackOverflow");
text.setSpan(new RelativeSizeSpan(1.5f), text.length() - "stackOverflow".length(), text.length(),
            Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
text.setSpan(new ForegroundColorSpan(Color.RED), 3, text.length() - 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.setText(text);

答案 1 :(得分:0)

将整个文本放入可跨之类的

Spannable text = edittext.getText();

那之后就做。

if (edittext.getText().length() != 0){
     text.setSpan(new ForegroundColorSpan(YOUR_COLOR), selection_start, selection_end, 34);
}

答案 2 :(得分:0)

您需要在onChangeText事件上实现 Spannable String builder(全局对象) ,只需将跨越字符串添加到Spannable String builder。

    SpannableStringBuilder objSpannableStringBuilder;

edt.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
              final SpannableString text = new SpannableString(s.toString());
              text.setSpan(new ForegroundColorSpan(Color.RED), 3, text.length() - 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);                  objSpannableStringBuilder.append(text);
              your_edit_text.setText(objSpannableStringBuilder);

            }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });