if函数如何嵌入多个android,Android中多个EditText输入效果的解决方式
前言
在开发中,我们常常遇到这种情况
我们往往需要的是下面这种效果
但是如果把这些实现的代码写在Activity中会比较麻烦,影响代码美观
解决方法
于是就有了下面这个辅助类,禁用了按钮的点击事件和按钮的渐变色,可同时添加一个或者多个EditText
/**
* 文本输入辅助类,通过管理多个TextView或者EditText输入是否为空来启用或者禁用按钮的点击事件
*/
public final class TextInputHelper implements TextWatcher {
private View mMainView;//操作按钮的View
private List mViewSet;//TextView集合,子类也可以(EditText、TextView、Button)
private boolean isAlpha;//是否设置透明度
public TextInputHelper(View view) {
this(view, true);
}
/**
* 构造函数
*
* @param view 跟随EditText或者TextView输入为空来判断启动或者禁用这个View
* @param alpha 是否需要设置透明度
*/
public TextInputHelper(View view, boolean alpha) {
if (view == null) throw new IllegalArgumentException("The view is empty");
mMainView = view;
isAlpha = alpha;
}
/**
* 添加EditText或者TextView监听
*
* @param views 传入单个或者多个EditText或者TextView对象
*/
public void addViews(TextView... views) {
if (views == null) return;
if (mViewSet == null) {
mViewSet = new ArrayList<>(views.length - 1);
}
for (TextView view : views) {
view.addTextChangedListener(this);
mViewSet.add(view);
}
afterTextChanged(null);
}
/**
* 移除EditText监听,避免内存泄露
*/
public void removeViews() {
if (mViewSet == null) return;
for (TextView view : mViewSet) {
view.removeTextChangedListener(this);
}
mViewSet.clear();
mViewSet = null;
}
// 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 synchronized void afterTextChanged(Editable s) {
if (mViewSet == null) return;
for (TextView view : mViewSet) {
if ("".equals(view.getText().toString())) {
setEnabled(false);
return;
}
}
setEnabled(true);
}
/**
* 设置View的事件
*
* @param enabled 启用或者禁用View的事件
*/
public void setEnabled(boolean enabled) {
if (enabled == mMainView.isEnabled()) return;
if (enabled) {
//启用View的事件
mMainView.setEnabled(true);
if (isAlpha) {
//设置不透明
mMainView.setAlpha(1f);
}
}else {
//禁用View的事件
mMainView.setEnabled(false);
if (isAlpha) {
//设置半透明
mMainView.setAlpha(0.5f);
}
}
}
}
在Activity创建时添加监听
private TextInputHelper mInputHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//创建一个辅助类,传入按钮操作View
mInputHelper = new TextInputHelper(mButton);
//可添加一个或者多个EditText,当然也可以添加TextView
mInputHelper.addViews(mEditText1, mEditText2, mEditText3);
}
在Activity销毁时移除监听(避免内存泄露)
@Override
protected void onDestroy() {
super.onDestroy();
//移除引用,避免内存泄露
mInputHelper.removeViews();
}
需要注意的是这里不单单只是可以添加EditText,还可以添加TextView,因为EditText是TextView的子类,最后要是觉得好用记得点个赞。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
if函数如何嵌入多个android,Android中多个EditText输入效果的解决方式相关推荐
- Android开发中,使用 EditText 输入内容,实现【一键清空内容】
本文仅为个人的处理方式,希望能对您有所帮助,欢迎各位留言指正,抱拳了 1.text.xml示例: <?xml version="1.0" encoding="utf ...
- Android开发中怎样调用系统Email发送邮件(多种调用方式)
在Android中调用其他程序进行相关处理,几乎都是使用的Intent,所以,Email也不例外,所谓的调用Email,只是说Email可以接收Intent并做这些事情 我们都知道,在Android中 ...
- android 自定义刷新控件,Android开发中MJRefresh自定义刷新动画效果
有时候我们对自己开发的项目经常不满意,但是我们要达到自定义刷新动画的效果有一定的难度,别着急,下面爱站技术频道和大家分享Android开发中MJRefresh自定义刷新动画效果,一起来学习吧! [一] ...
- android应用启动页面显示不出来了,Android应用中启动页出现白屏如何解决
Android应用中启动页出现白屏如何解决 发布时间:2020-12-11 14:41:17 来源:亿速云 阅读:100 作者:Leah 今天就跟大家聊聊有关Android应用中启动页出现白屏如何解决 ...
- android led闪烁功能,如何在Android应用层中制作一个LED指示灯效果
如何在Android应用层中制作一个LED指示灯效果 发布时间:2020-12-08 16:12:59 来源:亿速云 阅读:86 作者:Leah 本篇文章给大家分享的是有关如何在Android应用层中 ...
- android中资源文件的两种访问方式,在android开发中进行数据存储与访问的多种方式介绍...
在android开发中进行数据存储与访问的多种方式介绍 更新时间:2013年06月07日 16:24:23 作者: 很多时候我们的软件需要对处理后的数据进行存储或再次访问,Android为数据存储 ...
- Android开发中常见的内存泄露案例以及解决方法总结
Android开发中常见的内存泄露案例以及解决方法总结 参考文章: (1)Android开发中常见的内存泄露案例以及解决方法总结 (2)https://www.cnblogs.com/shen-hua ...
- android api 设置,Android API中文文档EditText
Android API中文文档EditText是本文要介绍的内容,主要是来了解并学习Android API文档的帮助,具体关于Android API的内容的详解来看本文. 一.Android API中 ...
- matlab中run按钮是灰色的,Android Studio中Run按钮是灰色的快速解决方法
首先是,在不同的AS中,gradle版本不同,下载的sdk版本不同,这些,都在gradle(Project.Models)相关代码里调过来就好.之前的文章里有说过. 经过调好gradle这些文件,AS ...
最新文章
- redis持久化方案比较
- mysql my-small.ini_MySql优化之my-small.ini配置
- oracle data guard闪回,官方文档上的这段关于 DATAGUARD 闪回的解释,如何理解?
- app之---豆果美食
- 项目架构开发:数据访问层之Cache
- Redis:12---有序集合对象
- 21复变函数的积分(七)
- Android10 root,Android Q系统Magisk完美实现ROOT
- 牛皮!竟然有大佬基于 Spring Boot + Vue 开发了一套网易云QQ音乐(附源码)。。。...
- 炮灰模型---------- 对女生选择追求者的数学模型的建立
- JSON_EXTRACT JSON_UNQUOTE以及json数组下标选择
- opengl+openmesh重绘rabbit
- c语言图片渐入代码_如何用c语言读取图片
- modbus软件开发linux,Linux C开发之用modbus实现串口通讯
- 内核问题解决方法记录
- 在Harvester上安装windows sever 2012 r2
- java.lang.NoClassDefFoundError: Failed resolution of: Landroid/view/View$OnUnhandledKeyEventListener
- 哥本哈根大学计算机科学,2020年哥本哈根大学有哪些优势专业
- 社区团购小程序怎么做,全流程解析
- selenium+python实现自动登陆QQ邮箱,并发送邮件
热门文章
- 一个能极大提高生产率的Chrome新建标签页扩展
- 在SAP Cloud Platform ABAP编程环境里打印系统变量
- document builder how is document url being generated
- SAP IBASE logic of pt_equiindx
- table T371A field IBTYP的search help
- SAP UI5日期字段的显示逻辑和用法
- 使用nodejs和Java访问远程服务器的服务
- python中soup_python – 使用带有UTF-8的soup.get_text()
- python编程数学函数_【编程】Python数学函数
- java中channelmessage,MessageStore支持的QueueChannel与Spring Integration Java Config