監聽多個edittext內容 改變按鈕顏色
阿新 • • 發佈:2019-02-02
效果如下圖:
當兩個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會立刻變紅色 否則就是灰色