EditText onChangeListener函数Android

时间:2013-07-24 13:52:04

标签: java android android-edittext

我有以下代码:

nameOfInf.setOnFocusChangeListener(new OnFocusChangeListener() {
    if (strTollAmount.length() > 0) {
        nameOfInf.setBackgroundColor(getResources().getColor(android.R.color.white));
        nameOfInf.setTextColor(getResources().getColor(android.R.color.black));
    }
});
tollAmount.setOnFocusChangeListener(new OnFocusChangeListener() {
    if (strInfName.length() > 0) {
        tollAmount.setBackgroundColor(getResources().getColor(android.R.color.white));
        tollAmount.setTextColor(getResources().getColor(android.R.color.black));
    }
});

该函数检查文本框上的值是否为空或null。因此,如果用户在文本框中输入内容,则背景和前景颜色应该更改。但那并没有发生。知道如何编辑吗?

4 个答案:

答案 0 :(得分:8)

我认为你正在寻找的是TextWatcher(尽管onFocusChanged可能有用,但这是另一种方法)。以下是示例代码:

TextWatcher watcher= new TextWatcher() {
        public void afterTextChanged(Editable s) { 
            if (TextBox1.getText().toString().equals("")) {
                 TextBox1.setBackgroundColor(getResources().getColor(android.R.color.white));
                 TextBox1.setTextColor(getResources().getColor(android.R.color.black));
            }

        }
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
              //Do something or nothing.                
        }
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            //Do something or nothing
        }
    };

    TextBox1.addTextChangedListener(watcher);

您还希望使用.equals()进行字符串比较。

答案 1 :(得分:4)

txt = (EditText) findViewById(R.id.txtChange);
    txt.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
            // TODO Auto-generated method stub
            if (TextUtils.isEmpty(s.toString().trim())) {
                txt.setBackgroundColor(Color.RED);
            } else
                txt.setBackgroundColor(Color.GREEN);
        }

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

        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });

答案 2 :(得分:1)

你可以TextWatcher,这是一个例子:

    final EditText et = new EditText(getApplicationContext());

TextWatcher tw = new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
    if (s.length() > 0) {
        et.setBackgroundColor(Color.WHITE);
    } else {
        et.setBackgroundColor(Color.GRAY);
    }

    }

    @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

    }
};

et.addTextChangedListener(tw);
setContentView(et);

答案 3 :(得分:0)

你的方法是我认为绝对错误(它编译?)。您需要测试字段的内容长度。我不确切地知道你在代码中想要做什么。

以下是两种可能的方法:

if (TextBox1.getText().toString().length() > 0) {
   // is not empty
}
else {
   // is empty
}

or

if (!TextUtils.isEmpty(TextBox1.getText().toString())) {
   // is not empty
}
else {
   // is empty
}