EditText监听文字改变和焦点改变
来源:互联网 发布:nginx 反向代理缺点 编辑:程序博客网 时间:2024/05/22 03:14
实现效果:
需求分析:
1) 电话号码数字按照344进行分组,中间加空格
2) 点击删除按钮,输入框中内容为空
3) 监听输入框的焦点变化状况 ,获取焦点显示删除按钮,失去焦点隐藏输入按钮(用户已经输入的情况下)
4) 设置光标的位置
5) 当用户输入的字符长度为13时,获取验证码背景变红,并且获取验证码按钮可以点击,其他时候不能点击。
代码实现:
private void initEditText() { et_login_name = (EditText) findViewById(R.id.et_login_name); iv_delete_phone_number = (ImageView) findViewById(R.id.iv_delete_phone_number); iv_delete_phone_number.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //赋值为空字符串 et_login_name.setText(""); } }); btn_sms_code = (Button) findViewById(R.id.btn_sms_code); et_login_name.addTextChangedListener(new MyWatch()); //设置检点改变监听,设置删除图标的显示与隐藏 (这里的监听特别人性化) et_login_name.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View view, boolean has) { if (et_login_name.getText().toString().length() > 0) { //用户有输入内容 if (has) { iv_delete_phone_number.setVisibility(View.VISIBLE); } else { iv_delete_phone_number.setVisibility(View.GONE); } } } }); } private class MyWatch 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) { //用户输入的字符串 String input = charSequence.toString(); int length = input.length(); //实现电话号码数字分组 344 if (length == 4) { if (input.substring(3).equals(new String(" "))) { input = input.substring(0, 3); et_login_name.setText(input); et_login_name.setSelection(input.length()); } else { // + 130 2 input = input.substring(0, 3) + " " + input.substring(3); et_login_name.setText(input); et_login_name.setSelection(input.length()); } } else if (length == 9) { if (input.substring(8).equals(new String(" "))) { input = input.substring(0, 8); et_login_name.setText(input); et_login_name.setSelection(input.length()); } else {// + input = input.substring(0, 8) + " " + input.substring(8); et_login_name.setText(input); et_login_name.setSelection(input.length()); } } //删除图标的显示与隐藏 if (et_login_name.getText().toString().isEmpty()) { iv_delete_phone_number.setVisibility(View.GONE); } else { iv_delete_phone_number.setVisibility(View.VISIBLE); } //光标位置 et_login_name.setSelection(et_login_name.getText().toString().length()); //获取验证码背景变红 if (et_login_name.getText().toString().length() == 13) { btn_sms_code.setBackgroundColor(getResources().getColor(R.color.red1)); btn_sms_code.setTextColor(getResources().getColor(R.color.white1)); //只有为11位电话号码时,才能点击 btn_sms_code.setClickable(true); } else { btn_sms_code.setBackgroundColor(getResources().getColor(R.color.bg_gay_with_radius_8)); btn_sms_code.setTextColor(getResources().getColor(R.color.font1)); //不能点击获取验证码按钮 btn_sms_code.setClickable(false); } } @Override public void afterTextChanged(Editable editable) { } }
<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:id="@+id/phone_frame" android:layout_width="match_parent" android:layout_height="55dp" android:background="#ffffff" android:gravity="center_vertical"> <ImageView android:id="@+id/iv_phone" android:layout_width="20dp" android:layout_height="20dp" android:layout_gravity="center" android:layout_marginLeft="19dp" android:background="@drawable/icon_user" /> <LinearLayout android:layout_width="0px" android:layout_height="0px" android:focusable="true" android:focusableInTouchMode="true" /> <EditText android:id="@+id/et_login_name" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="8dp" android:layout_weight="1" android:background="@null" android:hint="手机号" android:inputType="number" android:maxLength="13" android:textColor="#000" android:textSize="18sp" /> <ImageView android:id="@+id/iv_delete_phone_number" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginRight="20dp" android:contentDescription="@string/app_name" android:src="@drawable/ico_del" android:visibility="gone" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="center" android:layout_marginRight="20dp" android:orientation="horizontal"> <Button android:id="@+id/btn_sms_code" android:layout_width="120dp" android:layout_height="32dp" android:layout_gravity="center" android:background="#d9d9d9" android:clickable="false" android:gravity="center" android:paddingLeft="10dp" android:paddingRight="10dp" android:text="获取验证码" android:textColor="#999999" android:textSize="15sp" /> </LinearLayout> </LinearLayout>
0 0
- EditText监听文字改变和焦点改变
- android TextWatcher 监听textview和edittext的文字输入改变
- EditText Text改变监听
- Edittext监听动态改变
- EditText文字改变与软键盘的监听事件
- 监听android控件焦点改变
- EditText的内容改变监听
- EditText文本改变监听addTextChangedListener( )
- android 改变TextView和EditText文字选中效果
- android 改变TextView和EditText文字选中效果
- android 改变TextView和EditText文字选中效果
- Android之如何改变焦点状态【EditText】
- Android中EditText获取焦点和不自动获取焦点以及改变光标颜色
- UISwitch的方法和监听文本框的文字改变
- 给EditText添加ChangedListener(内容改变监听)
- Android EditText 添加文本改变监听
- Android 监听EditText的状态改变
- EditText 文本域改变事件监听
- MySQL配置ODBC
- 将页脚固定在页面底部
- java 之eclipse 快捷键
- MD5加密
- Android 图片的三级缓存机制 深度剖析
- EditText监听文字改变和焦点改变
- ORM Dapper 及扩展
- 常用的iOS第三方资源汇总
- 数据挖掘——各种分类算法的优缺点
- 模拟滤波器和数字滤波器 研究
- Spark 1.5.0 远程调试
- 程序的编译、链接与装载
- mysql 事务学习笔记
- 浏览量(PV)、访客数(UV)、访问次数、跳出率