WorksSizeCheckUtil
//发布作品时候填写尺寸的监听器
static IEditTextChangeListener mChangeListener;
public static void setChangeListener(IEditTextChangeListener changeListener) {
mChangeListener = changeListener;
}
/**
* 检测输入框是否都输入了内容
* 从而改变按钮的是否可点击
* 以及输入框后面的X的可见性,X点击删除输入框的内容
*/
public static class textChangeListener{
private TextView button;
private EditText[] editTexts;
public textChangeListener(TextView button){
this.button=button;
}
public textChangeListener addAllEditText(EditText... editTexts){
this.editTexts=editTexts;
initEditListener();
return this;
}
private void initEditListener() {
Log.i("TAG", "调用了遍历editext的方法");
for (EditText editText:editTexts){
editText.addTextChangedListener(new textChange());
}
}
/**
* edit输入的变化来改变按钮的是否点击
*/
private class textChange implements TextWatcher {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if (checkAllEdit()){
Log.i("TAG", "所有edittext有值了");
mChangeListener.textChange(true);
button.setEnabled(true);
}else {
button.setEnabled(false);
Log.i("TAG", "有edittext没值了");
mChangeListener.textChange(false);
}
}
@Override
public void afterTextChanged(Editable editable) {
}
}
/**
* 检查所有的edit是否输入了数据
* @return
*/
private boolean checkAllEdit() {
for (EditText editText:editTexts){
if (!TextUtils.isEmpty(editText.getText() + "")){
continue;
}else {
return false;
}
}
return true;
}
}
界面
public class MainActivity extends AppCompatActivity {
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText editText1 = (EditText) findViewById(R.id.et_1);
EditText editText2 = (EditText) findViewById(R.id.et_2);
EditText editText3 = (EditText) findViewById(R.id.et_3);
tv = (TextView) findViewById(R.id.tv);
//1.创建工具类对象 把要改变颜色的tv先传过去
WorksSizeCheckUtil.textChangeListener textChangeListener = new WorksSizeCheckUtil.textChangeListener(tv);
//2.把所有要监听的edittext都添加进去
textChangeListener.addAllEditText(editText1,editText2,editText3);
//3.接口回调 在这里拿到boolean变量 根据isHasContent的值决定 tv 应该设置什么颜色
WorksSizeCheckUtil.setChangeListener(new IEditTextChangeListener() {
@Override
public void textChange(boolean isHasContent) {
if(isHasContent){
tv.setTextColor(Color.RED);
}else{
tv.setTextColor(Color.BLACK);
}
}
});
}
}