[英]how to change text color without changing the the whole textview color
我試圖通過簡單地單擊按鈕來更改文本顏色,但是當我單擊按鈕時,它也會更改以前鍵入的文本顏色。 表示更改整個文本的顏色。 當我嘗試通過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"));
}
});
您可以使用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);
將您的整個文本變成Spannable之類的
Spannable text = edittext.getText();
在那之后做。
if (edittext.getText().length() != 0){
text.setSpan(new ForegroundColorSpan(YOUR_COLOR), selection_start, selection_end, 34);
}
您需要實現Spannable String builder(全局對象),並且在onChangeText事件上只需將跨越字符串附加到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) {
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.