![](/img/trans.png)
[英]How to define a different color and width of an EditText in Android
[英]edittext with different color in android
编辑文本时遇到一些问题,实际上我需要输入的第1个10个字母应该是红色,而在此之后输入的字母应该是灰色。 我做了颜色更改,问题是当我键入第11个字母时,以前键入的所有10个字母的颜色也都被更改了。 我想保持第10个字母的颜色不变,只有在第10个字母之后才应更改颜色。 请帮助我。
尝试使用Spannable
Spannable spannable = myEditText.getText();
spannable.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.red)), 0, 9, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
为此使用Spannable
String作为
SpannableStringBuilder builder = new SpannableStringBuilder();
SpannableString redSpannable= new SpannableString("yourstring");
redSpannable.setSpan(new ForegroundColorSpan(Color.RED), 0, 11, 0);
builder.append(redSpannable);
SpannableString whiteSpannable= new SpannableString("next string");
whiteSpannable.setSpan(new ForegroundColorSpan(Color.WHITE), 11, 20, 0);
builder.append(whiteSpannable);
editText.setText(builder, BufferType.SPANNABLE);
尝试以下代码(我已经对其进行了测试,并且可以正常工作):
final EditText input = (EditText) findViewById(R.id.my_edittext);
input.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) {
Spannable spannable = input.getText();
if (!TextUtils.isEmpty(s) && s.length() > 9){
spannable.setSpan(new ForegroundColorSpan(ContextCompat.getColor(MainActivity.this, R.color.my_color_red)),
0, 10, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
@Override
public void afterTextChanged(Editable s) {}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.