【问题标题】:Android - Modify entered text before it reaches EditText ViewAndroid - 在到达 EditText 视图之前修改输入的文本
【发布时间】:2018-09-22 02:06:03
【问题描述】:

问题陈述:

我们需要破解用户输入(在它到达 EditText 之前)并在文本到达 EditText 视图之前触发一些功能

这是怎么做到的??

尝试过的解决方案:

一个。在视图和布局中尝试了 onKeyPreIme() 方法 - 不起作用

b.我假设 EditText 上的侦听器将在文本到达视图后被调用。因此不支持我的解决方案。

c。在视图和布局中尝试了 dispatchKeyEventPreIme() 方法 - 不起作用。


我可以使用 BaseInputConnection 或其他类似的类吗?如果是这样,如何? 从本质上讲,这个解决方案的好方法是什么?

【问题讨论】:

  • 你能详细说明你的问题吗?
  • 希望对您有所帮助! stackoverflow.com/questions/8437975/…
  • @RahulChandrabhan - 我们有一台刷卡机。刷卡后,我们希望在号码到达应用程序之前更改卡号的某些部分。在文本到达视图或布局后更改文本始终是一种选择......但在我们的例子中不是一个安全的选择。所以 - 我们想要一个不依赖于视图的解决方案。
  • @kdblue - 解决方案与 Yossi 下面提到的相同。据我了解,侦听器设计模式在对象接收到数据后触发侦听器。就我而言,我想在数据到达对象之前拦截数据。
  • 我们可以自定义或使用 InputConnection 吗?

标签: android android-edittext android-input-method


【解决方案1】:

使用 TextWatcher

your_edit_text.addTextChangedListener(new 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) {

        }

        @Override
        public void afterTextChanged(Editable editable) {
            if (editable.toString().equals("anything_you_want")) {
                your_edit_text.setText("");
                // do something...
            }
        }
    });

【讨论】:

  • 我理解,监听器设计模式在对象接收到数据后触发监听器。就我而言,我想在数据到达对象之前拦截数据。
猜你喜欢
  • 2021-04-08
  • 2017-10-03
  • 2018-02-15
  • 2011-05-15
  • 1970-01-01
  • 2020-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多