【问题标题】:How to hide keypad in android after pressing home button按下主页按钮后如何在android中隐藏键盘
【发布时间】:2023-04-06 16:25:01
【问题描述】:

我正在显示一个包含消息的列表,并且每条消息的行都有一个评论按钮。当我单击评论按钮时,会打开一个评论框,其中包含编辑文本和提交评论的按钮。当评论框出现在屏幕上时,键盘也会出现用于输入文本。如果我在输入文本之前按下主页按钮,则应用程序进入后台,但键盘仍留在屏幕上。这让我很恼火。对于自定义列表,我正在使用自定义适配器,注释框的代码写在该适配器中。我尝试使用

inputmgr.hideSoftInputFromWindow(txtComments.getWindowToken(), 0);

但它不起作用。那么我如何以编程方式隐藏这个键盘。

【问题讨论】:

    标签: java android listview android-arrayadapter android-keypad


    【解决方案1】:

    尝试使用https://stackoverflow.com/a/1109108/1904479 中的代码。希望您不要在 Android 4.1 版本中对其进行测试。

    【讨论】:

    • 我在 4.2 上测试它。我可以试试这个,但不行。
    【解决方案2】:

    请使用此方法隐藏软键盘。

    public static void hideSoftKeyboard(Activity context) {
            InputMethodManager inputManager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
            if (inputManager != null)
            inputManager.hideSoftInputFromWindow(context.getWindow().getDecorView().getApplicationWindowToken(), 0);
            context.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
    
        }
    

    【讨论】:

    • 当你按下主页按钮时,只需调用这个方法,我认为它会起作用。;-) 当你想隐藏软键盘时,你能更新你的代码吗?
    • 我在 onPause() 中调用了这个方法。
    • 我认为你必须在按下主页按钮时调用此方法。然后软键盘将隐藏。
    【解决方案3】:

    KeyEvent.KEYCODE_HOME 无法被拦截。您可以在活动的onStop() 方法中隐藏小键盘inputmgr.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0);

    它不需要来自焦点视图editText的令牌。

    【讨论】:

    • @Nava2011 的回答更好。对于这个,您可以在适配器类中创建一个方法并从活动中调用它。
    • EditText 返回 null。
    • 编辑了答案,现在检查。直接从您的活动的onStop() 调用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-31
    • 1970-01-01
    • 2012-11-15
    • 2012-04-30
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    相关资源
    最近更新 更多