android - 如何在用户开始输入文本时显示“正在输入..”文本,以及如何显示“停止输入”文本,就像什么应用程序一样
问题描述
我正在开发聊天应用程序,所以我想显示一个文本输入..当有人开始回复另一个人时,还显示当用户停止输入时文本停止输入。如何实现这个逻辑我已经尝试对我的编辑文本使用文本更改侦听器,但是当用户已经停止输入时它显示“正在输入..”。我的要求是“打字...”文本应该只在用户按下键盘上的键时显示,如果他停止按下我需要显示“停止打字..”
这是我用过的逻辑
public void afterTextChanged(Editable s) {
if (!TextUtils.isEmpty(s.toString()) && s.toString().trim().length() == 1) {
Log.e("AAAAAAAAAAA", "Typing.....");
typingStarted = true;
} else if (s.toString().trim().length() == 0 && typingStarted) {
Log.e("AAAAAAAAAAA", "Stopped Typing.....");
typingStarted = false;
}
}
解决方案
您可以使用 Jake Wharton RXBinding 库:https ://github.com/JakeWharton/RxBinding
您需要发出文本更改事件并收听它们。只要有东西在发射,你就可以将你的价值设为is typing...
. 在您的订阅中,您可以有一个计时器,例如 1 秒,如果没有发出将值更改为Stopped typing
.
YourEditText.textChanges()
.subscribe {
YourTextView.text = "is typing..."
}
你可以有类似的东西:
YourTextView.textChanges()
.skipInitialValue()
.debounce(800, TimeUnit.MILLISECONDS)
.subscribe { YourTextView.text = "Stopped typing" }
这可能不是最好的答案,但我认为你可以从中得到想法。
推荐阅读
- flutter - 如何在等待函数中添加超时
- java - 在 Java 方法中创建对象
- angular - 错误:NullInjectorError:路由器没有提供程序
- django - Django 选择相关的选择相关
- node.js - 在通过 {order:"ASC/DESC",applyOn:"columnName"} 的 nodejs 中使用 Auth 创建一个微服务
- r - 您如何设置调色板以使其以最暗的颜色开始,其中旧数据比当前数据亮
- php - 如何检查特定数据是否存在于数据数组中
- swift - SwiftUI + Combine,一起使用 Models 和 ViewModels
- django - 无法访问 url 中的 Django 查询字符串参数
- python - 为什么我会收到 MemoryError?