我有以下代码:
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。因此,如果用户在文本框中输入内容,则背景和前景颜色应该更改。但那并没有发生。知道如何编辑吗?
答案 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
}