效果如下图:
当两个edittext都输入了内容才改变 "确定" 的颜色
实现:其实就是在用到的时候 调用下面工具类的addAlledittext( )方法 把要监听的edittext都传进来 然后下面的工具类对传进来的edittext数组遍历设置一个监听器TextWatcher 在监听器的onTextChanged()方法中调用checkAllEdit()方法进行判断是否所有edittext都有内容 如果都有内容了 就用接口回调传过去一个true 否则就传false 在那边我们收到这个boolean值 进行判断 如果为true 就把 确定 设置为红色 为false就设置为灰色! 其实挺简单的 只是写出来 如果有银需要用到直接拷贝工具类的代码即可 无需自己再写了!
package cn.hululi.hll.util.wordsort; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; import android.util.Log; import android.widget.EditText; import android.widget.TextView; import cn.hululi.hll.util.IEditTextChangeListener; /** * @author 咸鱼 * @time 2016/9/11 12:31 * @desc 监听et的工具类 */ public class 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; } } }
下面就是activity中的代码
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); } } }); } }
下面是接口
这样 在我们所有的editetxtview都有值时 textview会立刻变红色 否则就是灰色