如图最近接手一个项目很多这种未输入按钮不可用的界面,所以把这种功能封装了一下
使用:
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
public class MainActivity extends AppCompatActivity {
private EditText editPhone,editPwd,editVerify;
private Button btnRegister;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
private void init(){
editPhone = (EditText) findViewById(R.id.edit_phone);
editPwd = (EditText) findViewById(R.id.edit_pwd);
editVerify = (EditText) findViewById(R.id.edit_verification);
btnRegister = (Button) findViewById(R.id.btn_register);
//setBtn对应的是按钮 addEditView可多个
BtnToEditListenerUtils.getInstance()
.setBtn(btnRegister)
.addEditView(editPhone)
.addEditView(editPwd)
.addEditView(editVerify)
.build();
btnRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(),"Register",Toast.LENGTH_SHORT).show();
}
});
}
}
BtnToEditListenerUtils
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
public class BtnToEditListenerUtils {
private List<EditText> editTextList = new ArrayList<>();
private Button btn;
public static BtnToEditListenerUtils getInstance(){
return new BtnToEditListenerUtils();
}
public BtnToEditListenerUtils setBtn(Button btn){
this.btn = btn;
btn.setEnabled(false);
return this;
}
public BtnToEditListenerUtils addEditView(EditText editText){
editTextList.add(editText);
return this;
}
public void build(){
setWatcher();
}
/**
* 给每一个EditText设置Watcher监听,当前的EditText文本不为空时遍历每一个EditText,
* 只有都不为空时 tag为true
*/
private void setWatcher(){
for (int i = 0; i < editTextList.size(); i++) {
editTextList.get(i).addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (s.length() == 0) {
setBtnUnavailable();
return;
}
boolean tag = false;
for (int i = 0; i < editTextList.size(); i++) {
if (editTextList.get(i).getText().length() != 0) {
tag = true;
}else{
tag = false;
break;
}
}
if (tag) {
setBtnAvailable();
}else{
setBtnUnavailable();
}
}
});
}
}
private void setBtnAvailable(){
btn.setBackground(ContextCompat.getDrawable(App.getAppContext(), R.drawable.main_color_btn_round_bg));
btn.setEnabled(true);
}
private void setBtnUnavailable(){
btn.setBackground(ContextCompat.getDrawable(App.getAppContext(), R.drawable.gray_btn_round_bg));
btn.setEnabled(true);
}
源码
代码逻辑不难,都有注释。
end!