首页 > 解决方案 > 如何在用户开始输入文本时显示“正在输入..”文本,以及如何显示“停止输入”文本,就像什么应用程序一样

问题描述

我正在开发聊天应用程序,所以我想显示一个文本输入..当有人开始回复另一个人时,还显示当用户停止输入时文本停止输入。如何实现这个逻辑我已经尝试对我的编辑文本使用文本更改侦听器,但是当用户已经停止输入时它显示“正在输入..”。我的要求是“打字...”文本应该只在用户按下键盘上的键时显示,如果他停止按下我需要显示“停止打字..”

这是我用过的逻辑

 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;
            }
        }

标签: android

解决方案


您可以使用 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" }

这可能不是最好的答案,但我认为你可以从中得到想法。


推荐阅读