java - Android 在焦点消失时隐藏键盘,但在选择密码字段时不会隐藏键盘

标签 java android

当我将焦点移到另一个文本字段时,下面的代码有效,但当我点击屏幕上的任意位置时(我想触发 onFocusChanged 事件)则无效。我怎样才能实现这个目标?我还需要检查其他文本字段是否没有焦点,因为如果有焦点,则应保留键盘。

usernameET.setOnFocusChangeListener((new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if(v == usernameET) {
                    Log.d(LoginPage.Tag, "keyboardOnTouch");
                    if (hasFocus)
                    {
                        ((InputMethodManager) a.getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(usernameET,
                                InputMethodManager.SHOW_FORCED);
                    }
                    else {
                        ((InputMethodManager) a.getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(
                                usernameET.getWindowToken(), 0);
                    }
                }
            }
        }));

最佳答案

您可以使用 onTouchEvent() 隐藏软键盘。

@Override
    public boolean onTouchEvent(MotionEvent event) {
        InputMethodManager imm = (InputMethodManager)getSystemService(Context.
                                                        INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
        return true;
    }

希望这会有所帮助。

关于java - Android 在焦点消失时隐藏键盘,但在选择密码字段时不会隐藏键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14742804/

相关文章:

java - org.apache.catalina.LifecycleException : Failed to initialize component [org. apache.catalina.webresources.JarResourceSet@4ae3c1cd]

java - 该程序中中断的执行顺序是如何工作的?

java - Spring MVC 项目上的“缺少 Artifact ”和 'Failed to read artifact descriptor' 错误

Android View 相同的宽度和高度

android - 如何实现这个 Material 设计功能? (悬浮在键盘上方的按钮)

java - spring cloud sleuth 中每个新的http请求都有不同的traceId

java - RDFWriter 写入需要花费很多时间

java - 应用程序未通过点击小部件启动

java - 安卓 Java : is this a good way instead enums?

android - 我将 Android 从 targetSdk 22 升级到 23,我得到了 NoSuchMethodError。我该如何解决这个问题?