设置值时更改EditText的颜色

时间:2015-01-16 13:56:53

标签: android android-edittext

我有8个EditText。

用户在某些EditText中输入一些值,并通过一些计算填充空白的EditText。

我编写代码来改变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);
                            }

意味着情节是,用户可以将值放在2,3,4中他想要什么,其余的edittext将根据一些计算填充并显示填充的用户我需要更改它到蓝色,如果用户编辑edittext,颜色现在变成蓝色,但我想要黑色

什么方式?

4 个答案:

答案 0 :(得分:1)

由于你有很多EditText个控件以相同的方式处理,我建议使用TextWatcherdocumentation)来监听文字更改并避免重复所有3个,8个或数百个控件的操作相同。

请注意,以下示例未编译,并且是从内存中的简单文本编辑器中编写的,因此可能需要进行更改才能进行编译。但是,它只是一个指向正确方向的模板

首先,您要创建自定义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));

答案 1 :(得分:1)

当用户点击editText时,尝试使用onTouchListener将颜色更改为黑色。

答案 2 :(得分:0)

您必须使用文本更改侦听器。

_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

            }
        });

答案 3 :(得分:0)

我所做的只是为所有编辑文本添加ontouch监听器

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;
            }
        });