如何在动态编辑文本中更改特定字符串的颜色?? - Android

时间:2014-03-30 19:59:29

标签: android user-interface android-activity android-edittext textcolor

在我的应用中,我希望用户通过编辑文本以文本形式提供答案。因此,对于正确的答案,我希望在打字时,这些字母会在运行时变为绿色(或红色表示不正确)。

例如,如果答案是DOG,如果用户动态键入DOG,我希望文本变为绿色。即使他输入的第一个字母是D,我也希望文字颜色为绿色。只有当用户的输入文本不正确时,我才希望它是红色的。文字颜色应该在打字时随时改变。

1 个答案:

答案 0 :(得分:0)

创建EditText并致电addTextChangedListener,为其提供自定义TextWatcher,您最需要覆盖其onTextChanged

在此方法中,根据您的逻辑更改文本颜色。

快照:

    mEditBox = (EditText) findViewById(R.id.my_edit_box_id);
    mEditBox.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before,
            int count) {

            String currentText = mEditBox.getText().toString();
            // highligt correct answer in green
            if ("DOG".startsWith(currentText)) { // user starts typing "DOG"
                mEditBox.setTextColor(Color.GREEN);
            } else {
                mEditBox.setTextColor(Color.RED); // incorrect input
            }

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {

        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });