如何在 Android 中监控 TextView 的变化

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 63w+ 字,讲解图 2808+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2200+ 小伙伴加入学习 ,欢迎点击围观

一些基于表单的应用程序需要持续监视文本更改以执行前端表单验证。这可以通过实现 android.text.TextWatcher 接口来实现。 TextWatcher 接口提供了以下三个回调方法,它们在更新文本视图时调用。


 public void beforeTextChanged(CharSequence s, int start, int count, int after);
public void onTextChanged(CharSequence s, int start, int before, int count);
public void afterTextChanged(Editable s);

beforeTextChanged() onTextChanged() 方法主要作为通知提供,不应在这些方法中的任何一个中对 CharSequence 进行更改。如果您试图拦截输入到视图中的文本,则可能会在调用 afterTextChanged() 时进行更改。

首先,您需要向 TextView 注册一个 TextWatcher 实例,调用 textView.addTextChangedListener() 方法。从语法中可以看出,一个 TextView 可以注册多个 TextWatcher。现在我们了解了要使用的方法,让我们检查示例的用法。

统计 TextView 变化的字符数

TextWatcher 的一个简单用途是创建一个实时字符计数器,它在用户键入或删除信息时跟随 EditText。


 public void beforeTextChanged(CharSequence s, int start, int count, int after);
public void onTextChanged(CharSequence s, int start, int before, int count);
public void afterTextChanged(Editable s);

因为我们的需求不包括修改插入的文本,所以我们可以从 onTextChanged() 读取计数,文本更改一发生就会发生。其他方法未使用并留空。

相关文章