繁体   English   中英

Android中具有不同颜色的edittext

[英]edittext with different color in android

编辑文本时遇到一些问题,实际上我需要输入的第1个10个字母应该是红色,而在此之后输入的字母应该是灰色。 我做了颜色更改,问题是当我键入第11个字母时,以前键入的所有10个字母的颜色也都被更改了。 我想保持第10个字母的颜色不变,只有在第10个字母之后才应更改颜色。 请帮助我。

这是我的代码,我希望用户实时输入文本,输入10个字母的消息后,第11个字母的颜色应更改

尝试使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM