改变button可点击的工具类

    xiaoxiao2021-03-25  113

    在开发中我们经常要根据文本框输入的内容来改变一个button的状态,数据改变时,当数据正确才可以点击,数据不正确,设置成不可点击状态,并且改变他们的样式。当然这里的“正确”是要根据自己的需求来的;

    下面贴出代码:

    /** * Created 郑贤鑫 on 2017/3/7. */ public class CanClickUtil { private Context context; private OnDataListener listener; private TextView tvbtn; public static CanClickUtil getInstance(){ return new CanClickUtil(); } public void configBtn(Context context,TextView btn, EditText editText,OnDataListener listener){ this.context=context; this.tvbtn=btn; editText.addTextChangedListener(watcher); this.listener=listener; } public interface OnDataListener{ boolean dataIsOk(); } TextWatcher watcher=new 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("".equals(charSequence.toString())){ } if(listener.dataIsOk()){ tvbtn.setClickable(true); tvbtn.setBackgroundColor(context.getResources().getColor(R.color.tev_sure)); }else { tvbtn.setClickable(false); tvbtn.setBackgroundColor(context.getResources().getColor(R.color.good_status_two)); } } @Override public void afterTextChanged(Editable editable) { } }; } 因为安卓里面的Button是继承自TextView,所以这里可以传入textview写的按钮,也可以传入button写的按钮;然后是给EditText添加了监听事件,所以只要输入的数据改变了,就会进行一次数据是否正确的判断。

    使用:

    CanClickUtil.getInstance().configBtn(context,btnSubmit, editNum, new CanClickUtil.OnDataListener() { @Override public boolean dataIsOk() { String data=editNum.getText().toString(); Double d=0.0; try { d=Double.valueOf(data); }catch (Exception e){ e.printStackTrace(); d=0.0; } if(d<1){ return false; } return true; } }); 这里主要是依靠了定义的一个接口回调,你实现这个接口里的具体方法,在里面具体设置你的判断条件,建议只列出各种错误的条件,只要错误就返回false,后面的代码就不会执行了,如果不满足任何错误条件,那么走到方法最后面,返回true,最上面写的那个工具类就会接收到这个方法返回的结果,根据结果来设置按钮的状态;

    public interface OnDataListener{ boolean dataIsOk(); }

    当然有时候是一个页面有多个输入框,只有一个按钮,那么你也可以多调用几次这个方法,传入不同的EditText,但传入同一个button,也是可以的;
    转载请注明原文地址: https://ju.6miu.com/read-21538.html

    最新回复(0)