我试图通过简单地单击按钮来更改文本颜色,但是当我单击按钮时,它也会更改以前键入的文本颜色。表示更改整个文本的颜色。当我尝试通过Spannable更改颜色时,它将更改文本所选部分的颜色,但不会更改我接下来要键入的文本的颜色。有没有一种方法可以单击按钮,它不会更改整个文本的颜色,而是会改变我接下来键入的颜色。谢谢
这是我唯一知道的
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"));
}
});
答案 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) {
}
});