设置值时更改EditText的颜色
Change the color of EditText when setting value
我有 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 将根据一些计算进行填充,并向用户显示我需要填充的内容将其更改为蓝色,如果用户编辑编辑文本,颜色现在变为蓝色,但我想要黑色
怎么走?
您必须使用文本更改侦听器。
_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
(documentation) 来监听文本变化并避免重复对所有 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));
我所做的只是将 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;
}
});
尝试在用户点击 editText 将颜色更改为黑色时使用 onTouchListener。
我有 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 将根据一些计算进行填充,并向用户显示我需要填充的内容将其更改为蓝色,如果用户编辑编辑文本,颜色现在变为蓝色,但我想要黑色
怎么走?
您必须使用文本更改侦听器。
_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
(documentation) 来监听文本变化并避免重复对所有 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));
我所做的只是将 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;
}
});
尝试在用户点击 editText 将颜色更改为黑色时使用 onTouchListener。