【问题标题】:Overriding setOnKeyListener for all EditTexts in my Android app?为我的 Android 应用程序中的所有 EditText 覆盖 setOnKeyListener?
【发布时间】:2018-10-12 02:13:50
【问题描述】:

我试图忽略来自任何连接的物理/硬件键盘的输入,同时仍然允许软键盘输入。

通过使用this answer 中的示例,我能够完成我需要的工作,但我必须找到该覆盖并将该覆盖添加到我放置在项目中的每个 EditText 中。

我想知道是否可以为一个活动或整个应用程序中的所有 EditTexts 覆盖 setOnKeyListener 方法?

【问题讨论】:

  • 使用dispatchKeyEvent(KeyEvent e)Activity 怎么样?当按键被按下时它会给出一个事件。

标签: android android-edittext overriding


【解决方案1】:

创建一个全局变量来保存你的监听器

View.OnKeyListener keyListener = new View.OnKeyListener() {
        @Override
        public boolean onKey(View view, int i, KeyEvent keyEvent) {
            return false;
        }
    };

然后将其设置为您的所有editText

editText1.setOnKeyListener(keyListener);
editText2.setOnKeyListener(keyListener);

希望对你有帮助

编辑:

您也可以使用注射器。以ButterKnife 为例

@BindViews({ R.id.first_name, R.id.middle_name, R.id.last_name })
List<EditText> nameViews;

通过这个你的库,你不必做findViewById(),最好的事情是你只需一行就可以实现你想要的东西

nameViews.setOnKeyListener(keyListener);

上面的代码会将keyListener设置为3个EditText

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    相关资源
    最近更新 更多