当我输入文字时如何更改TEXT EDIT控件的颜色,并在完成输入后再次更改颜色。
键入后我需要黑色文字,如果我去下一个编辑文本,前一个应该是白色。还有一件事我把所有edittexts放在列表视图中。我怎么得到? 在此先感谢。
答案 0 :(得分:4)
只需将焦点更改的侦听器创建为全局变量即可。
View.OnFocusChangeListener listener = new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
((EditText) v).setTextColor(hasFocus ? Color.BLACK : Color.WHITE);
}
};
现在将该侦听器设置为您在列表视图上创建的edittext。
editText.setOnFocusChangeListener(listener);
因此,当您在edittext中时,其颜色将为黑色,当您离开edittext时,颜色将更改为白色,下一个聚焦的edittext将变为黑色。
答案 1 :(得分:1)
简单有效的解决方案
在 res/color
文件夹textcolorselector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="#FFF"/>
<item android:state_focused="true" android:color="#000"/>
<item android:color="#000"/>
</selector>
现在是editext。
<EditText
android:textColor="@color/textcolorselector">
<requestFocus />
</EditText>
答案 2 :(得分:0)
试试这个
etEmail.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
etEmail.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.colorPrimary));
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
etEmail.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.defaultColor));
}
});
答案 3 :(得分:0)
您可以使用TextWatcher
实施例
yourEditText.addTextChangedListener(new TextWatcher()
{
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after)
{
//do stuff
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
{
//do stuff
}
@Override
public void afterTextChanged(Editable s)
{
//do stuff
}
});