【问题标题】:Android Hide Keyboard Not Working - cannot hide soft keyboardAndroid 隐藏键盘不起作用 - 无法隐藏软键盘
【发布时间】:2011-02-17 06:46:26
【问题描述】:

我正在 Droid Incredible 上进行开发(并且也在 1.5 AVD 模拟器上进行了测试),并且我的选项卡小部件中的一个选项卡包含一个列表视图和一个带有 EditText 和一个发送按钮的行(用于聊天功能)。单击发送后,我正在使用以下方法关闭软键盘,但它不起作用。这与我在其他地方发现的人们认为正确的代码相同。

看到我遗漏的任何东西了吗?

// in Button's onClick():
EditText chatTextBox = (EditText) findViewById(R.id.chat_entry);
// Handle button click ...
chatTextBox.setText("");

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(chatTextBox.getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);

我也尝试将标志更改为 0。没有运气。有谁知道怎么回事?

****EDIT**** 刚刚意识到我最初使用的是hideSoftInputFromInputMethod() 而不是hideSoftInputFromWindow()。更改它并没有使它起作用......

【问题讨论】:

    标签: android hide soft-keyboard


    【解决方案1】:

    将 HIDE_IMPLICIT_ONLY 更改为 0 即可(在我从 hideSoftInputFromInputMethod() 更改为 hideSoftInputFromWindow() 之后)。

    但是我不确定为什么 HIDE_IMPLICIT_ONLY 不起作用,因为我没有通过长按菜单来明确打开键盘。

    【讨论】:

    • 如果您将显示带有标志SHOW_FORCED的键盘,则表示用户已强制打开输入法(例如通过长按菜单),因此在明确关闭之前不应关闭它. See Documentation
    • 如果您有强制显示键盘并想隐藏,请使用以下代码InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(mEditText.getWindowToken(), 0);
    【解决方案2】:

    另一个防止它在 AndroidManifest.xml 文件中活动的选项

    android:windowSoftInputMode="stateAlwaysHidden" - 此方法将在加载 Activity 时阻止加载/显示键盘。但是当你点击像edittext这样的可编辑组件时,键盘会打开。 非常适合我的要求。

    <activity
                android:name=".Name"
                android:label="@string/app_name" 
                android:windowSoftInputMode="stateAlwaysHidden">
    

    【讨论】:

    • 当键盘永远不会以某种方式消失时,这是有效的。好一个。
    • 我开始使用 并在我的所有测试设备上工作,除了我的 amazon fire。 适用于所有设备,包括 amazon fire。
    【解决方案3】:

    1.首先将您的编辑文本标记与键盘绑定并打开
    inputMethodManager.showSoftInput(_edittext, 0); //这里_edittext是视图实例

    2.如果编辑文本从屏幕上隐藏,键盘将自动隐藏

    3.edit 文本仍在屏幕上,但您想隐藏键盘,然后使用以下代码 imm.hideSoftInputFromWindow(_edittext.getWindowToken(), 0); //如果edittext不在屏幕上或没有聚焦,这将不起作用。

    【讨论】:

      【解决方案4】:

      尝试在 onResume/onCreate 中做:

      rootView.requestFocus();
      

      rootView 是您的主要视图。这会将焦点从 EditText 上移开。

      【讨论】:

        猜你喜欢
        • 2022-12-14
        • 2016-05-04
        • 1970-01-01
        • 2012-05-18
        • 1970-01-01
        • 2023-04-03
        • 2014-04-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多