Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 设置值时更改EditText的颜色_Android_Android Edittext - Fatal编程技术网

Android 设置值时更改EditText的颜色

Android 设置值时更改EditText的颜色,android,android-edittext,Android,Android Edittext,我有8条文本 用户将一些值输入到一些编辑文本中,空白的编辑文本被一些计算填充。 我编写了更改EditText颜色的代码,如下所示: if (ng1 == 0) { if (Goal >= 0 && Goal <=10) eg1.setText(Float.toString(Goal));

我有8条文本

用户将一些值输入到一些编辑文本中,空白的编辑文本被一些计算填充。

我编写了更改EditText颜色的代码,如下所示:

                   if (ng1 == 0) {
                                if (Goal >= 0 && Goal <=10)
                                    eg1.setText(Float.toString(Goal));
                                 eg1.setTextColor(Color.BLUE);

                            }

                            if (ng2 == 0) {
                                if (Goal >= 0 && Goal <=10)
                                    eg2.setText(Float.toString(Goal));
                                eg2.setTextColor(Color.BLUE);
                            }

                            if (ng3 == 0 ) {
                                if (Goal >= 0 && Goal <=10)
                                    //eg3.setText("");
                                    eg3.setText(Float.toString(Goal));
                                eg3.setTextColor(Color.BLUE);
                            }
if(ng1==0){

如果(目标>=0&&Goal=0&&Goal=0&&Goal您必须使用文本更改侦听器

_edtText.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                // TODO Auto-generated method stub
                _edtText.setTextColor(Color.BLACK); // you can set color onTextChanged
            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
                // TODO Auto-generated method stub


            }

            @Override
            public void afterTextChanged(Editable s) {
                // TODO Auto-generated method stub

            }
        });

由于有许多
EditText
控件是以相同的方式处理的,因此我建议使用
TextWatcher
()来侦听文本更改,并避免对所有3、8或zillion控件重复相同的操作

请注意,下面的示例不是编译的,而是在一个简单的文本编辑器中从内存中编写的,因此可能需要进行更改才能使它们编译。然而,它只是一个模板,为您指明了正确的方向

首先,创建一个自定义的
TextWatcher
实现,以便让相同的
TextWatcher
处理所有
EditText

private class MyTextWatcher implements TextWatcher {

    private EditText mEditText;

    public MyTextWatcher(EditText view) {
        mEditText = view;
    }

    public void afterTextChanged (Editable s) {}

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

    public void onTextChanged (CharSequence s, int start, int before, int count) {
        //Check if has user focus. if it has, then user is typing smth. set appropriate color
        mEditText.setTextColor(mEditText.hasFocus() ? Color.BLACK : Color.BLUE);
    }
};
然后在
onCreate()
中添加textChange侦听器:

eg1 = (EditText)findViewById(R.id.your_eg1_id);
eg1.addTextChangedListener(new MyTextWatcher(eg1));
eg2 = (EditText)findViewById(R.id.your_eg2_id);
eg2.addTextChangedListener(new MyTextWatcher(eg2));
...
egN = (EditText)findViewById(R.id.your_egN_id);
egN.addTextChangedListener(new MyTextWatcher(eg3));

我所做的只是将ontouch listener添加到所有编辑文本中

eg1.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                eg1.setTextColor(Color.BLACK);
                return false;
            }
        });

        eg2.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                eg2.setTextColor(Color.BLACK);
                return false;
            }
        });

        eg3.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                eg3.setTextColor(Color.BLACK);
                return false;
            }
        });

        eg4.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                eg4.setTextColor(Color.BLACK);
                return false;
            }
        });

        eg5.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                eg5.setTextColor(Color.BLACK);
                return false;
            }
        });

        eg6.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                eg6.setTextColor(Color.BLACK);
                return false;
            }
        });

        eg7.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                eg7.setTextColor(Color.BLACK);
                return false;
            }
        });

        eg8.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                eg8.setTextColor(Color.BLACK);
                return false;
            }
        }); 

当用户单击editText时,尝试使用onTouchListner将颜色设置为黑色。

虽然这是我的工作,但最好提供一个简短的解释,说明您更改了什么以及OP的代码中出现了什么错误。在您的代码中,如果editText颜色始终设置为蓝色,则您无法管理其他情况。我想,OP希望更改颜色当用户再次在文本框中键入内容时,将文本设置为黑色。@PrerakSola是的,我想要的正是您所说的内容。因此,在这种情况下,如果所有条件都为假,则在颜色为黑色的情况下,文本设置为黑色。