Android 监听EditText 使Button是否能可用工具类
来源:互联网 发布:百度云域名查询 编辑:程序博客网 时间:2024/04/30 15:46
如图最近接手一个项目很多这种未输入按钮不可用的界面,所以把这种功能封装了一下
使用:
@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!
1 0
- Android 监听EditText 使Button是否能可用工具类
- 监听EditText内容变化设置Button是否可点击
- android Button 的监听类
- 学习笔记——自定义Button,自带监听EditText是否空
- Android VoLTE 视频通话是否可用状态读取与监听
- Android VoLTE 视频通话是否可用状态读取与监听
- Android EditText 监听输入
- android 监听edittext addTextChangedListene
- Android Edittext监听
- Android---监听EditText变化
- Android EditText实时监听
- Android EditText 监听回车键
- Android之EditText监听
- Android EditText输入监听
- Android EditText 监听回车键
- android EditText长度监听
- Android EditText 监听回车键
- Android的Button监听
- session的断点续传
- linux运维实用的42个常用命令总结
- C++构造函数初始化列表与赋值
- 第一行代码笔记 下拉刷新卡片现实上滑隐藏标题栏的demo
- Android中Activity中某个EditText被clearFocus后其他控件(别的EditText)也不要获得焦点
- Android 监听EditText 使Button是否能可用工具类
- JS删除Cookies操作
- linux笔记---程序函数
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- 搬家
- 简单谈谈对C++设计模式的理解
- MySQL基本操作
- K8S对node添加label,并根据label筛选节点
- Binary Tree Paths