一行代码监听EditText变化改变Button可否点击
来源:互联网 发布:win10 优化工具 编辑:程序博客网 时间:2024/05/10 20:21
一行代码监听EditText变化改变Button可否点击
我们要实现的效果为在未输入时显示默认的颜色且无法点击,在EditText输入后改变按钮颜色且可点击,点击后改变颜色。
- 主要思路为:首先创建按钮变化的drawable文件,这个我就不多说了,直接上代码。
button_disabled.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#911b77c6" /> <corners android:radius="5dp" /> <stroke android:width="1dp" android:color="#910062b8" /> </shape>
- button_normal.xml
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#1b77c6" /> <corners android:radius="5dp" /> <stroke android:width="1dp" android:color="#0062b8" /></shape>
- button_pressed.xml
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#0062b8" /> <corners android:radius="5dp" /></shape>
- button_select.xml
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_window_focused="false" android:drawable="@drawable/button_normal" /> <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/button_pressed" /></selector>
- 按钮的布局文件:
<EditText android:id="@+id/et_b" android:hint="0.00" android:background="@null" android:inputType="number" android:textColorHint="#cdcfd1" android:textColor="@color/back_7" android:textSize="20sp" android:layout_marginLeft="16dp" android:layout_width="match_parent" android:layout_height="wrap_content" /><Button android:id="@+id/tv_btn" android:layout_width="match_parent" android:layout_height="48dp" android:layout_marginLeft="16dp" android:layout_marginRight="16dp" android:background="@drawable/button_disabled" android:gravity="center" android:text="确定" android:enabled="false" android:textColor="@color/white" android:textSize="18sp" />
- 现在我们就上主要的代码:
public class TextChangeUtils implements TextWatcher { private TextView btn; private List<EditText> mList = new ArrayList<>(); public TextChangeUtils(EditText editText, TextView btn) { mList.add(editText); this.btn = btn; } public TextChangeUtils(List<EditText> mList, TextView btn) { this.mList = mList; this.btn = btn; } @Override public void afterTextChanged(Editable arg0) { } @Override public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { } @Override public void onTextChanged(CharSequence cs, int start, int before, int count) { for (int i = 0; i < mList.size(); i++) { if (mList.get(i).getText().length() > 0) { if (i + 1 == mList.size()) { btn.setBackgroundResource(R.drawable.button_select); btn.setEnabled(true); } } else { btn.setBackgroundResource(R.drawable.button_disabled); btn.setEnabled(false); break; } } }}
- 上面的代码很简单就不多说了,我定义了两个方法供调用,一个是判断单个EditText是否输入,一个是传入一个集合的EditText。现在我们来看一下如何调用。
etB.addTextChangedListener(new TextChangeUtils(etB, tvBtn));
你只需要找到你的控件传入就可实现了,是不是很简单,方法还有很多可改进的地方,望广大袁友改进。。。
0 0
- 一行代码监听EditText变化改变Button可否点击
- 监听EditText内容变化设置Button是否可点击
- 监听EditText的变化
- 监听EditText内容变化
- 监听EditText的变化
- 监听EditText的变化
- 监听EditText的变化
- Android---监听EditText变化
- EditText 监听内容变化
- Edittext监听字数变化
- 监听EditText的变化
- 监听EditText的变化
- EditText监听焦点变化
- 点击button,button背景图片变化
- 使用TextWatcher监听EditText的文本变化之后动态改变EditText里面的内容
- EditText Text改变监听
- Edittext监听动态改变
- android button点击事件(第一行代码android学习笔记)
- ATOM使用笔记
- main函数的两个参数
- 802.11协议精读14:协议理论性能(仿真验证)
- @PathVariable出现点号"."时导致路径参数截断获取不全的解决办法
- PHP抓取类-Snoopy
- 一行代码监听EditText变化改变Button可否点击
- jenkins忘记密码后,去除权限操作
- C++中的容器类详解
- HTTP协议3-HTTP请求方法
- JavaScript(js)构造器的应用(求数组中平均数及大于平均数的人数)
- 第14周项目3-是否二叉排序树?
- Windows环境下redis的集群部署
- 【BZOJ】1026 [SCOI2009] windy数
- HTTP 状态消息总结(转载)