TextWatcher的行为不符合预期

时间:2012-01-05 09:00:05

标签: android

我有很多EditText和一些TextView,当没有填写字段时,TextView需要是红色的。我有以下代码来完成此任务。

    final TextView textSoftware = (TextView) findViewById(R.id.textViewSoftware);
    final EditText fieldSoftware = (EditText) findViewById(R.id.fieldSoftware);

    fieldSoftware.addTextChangedListener(new TextWatcher() {
        public void afterTextChanged(Editable s) {
            if (!fieldSoftware.getText().toString().trim().equals("")) { 
                textSoftware.setTextColor(Color.WHITE);
            }else{
                textSoftware.setTextColor(Color.RED);   
            }
        }

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

        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
        };
    });

但是,当我只为其他字段和textview重复此片段时,else语句似乎不起作用。它会像它应该变成白色,但在你擦除你的条目时不会变成红色。

2 个答案:

答案 0 :(得分:2)

  if (fieldSoftware.length()<=0) { 
                textSoftware.setTextColor(Color.WHITE);
            }else{
                textSoftware.setTextColor(Color.RED);   
            }

答案 1 :(得分:0)

为了更好的回应,请使用此

if (fieldSoftware.getText().toString().trim().isEmpty()) { 
       textSoftware.setTextColor(Color.RED);
}else{
       textSoftware.setTextColor(Color.WHITE);
 }