隐藏更衣柜应用的软键盘

时间:2015-04-22 10:30:35

标签: android android-softkeyboard

我正在尝试关闭在其他应用中打开的软键盘。 我试过这里的每一个解决方案: Programmatically Hide/Show Android Soft Keyboard或此处:Close/hide the Android Soft Keyboard

正如你在图片中看到的那样,我必须关闭从另一个应用程序打开的键盘,添加到清单以不使键盘可见并没有成功。

要注意这是一个更衣室应用程序,我会在手机进入睡眠模式时启动一项活动。

我错过了什么吗?从商店测试其他更衣室应用程序并没有遇到此问题

但结果如下:

App with opened keyboard My app

修改:更多信息

这就是我启动储物柜的方式:

if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
    //Toast.makeText(context, "" + "screeen off", Toast.LENGTH_SHORT).show();

    wasScreenOn = false;
    Intent intent = new Intent(context, LockScreenActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
    intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

    context.startActivity(intent);

    // do whatever you need to do here
    //wasScreenOn = false;
} 

这是清单代码:

<activity
    android:name=".ui.activities.LockScreenActivity"
    android:excludeFromRecents="true"
    android:noHistory="true"
    android:screenOrientation="portrait"
    android:windowSoftInputMode="stateAlwaysHidden|adjustNothing"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar" />

5 个答案:

答案 0 :(得分:4)

  

尝试更换   android:windowSoftInputMode="stateAlwaysHidden|adjustNothing"   android:windowSoftInputMode="stateHidden"行   AndroidManifest.xml喜欢这个

<activity
        android:name=".ui.activities.LockScreenActivity"
        android:excludeFromRecents="true"
        android:noHistory="true"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="stateHidden"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar" />

作为参考,您可以参考http://developer.android.com/guide/topics/manifest/activity-element.html#wsoft

  

&#34; stateHidden&#34;当用户选择时,软键盘会被隐藏   活动 - 即,当用户肯定地向前导航时   活动,而不是因为离开另一个活动而退回到活动中   活性。

     

&#34; stateAlwaysHidden&#34;软键盘总是隐藏在   活动的主窗口有输入焦点。

答案 1 :(得分:2)

可以实现覆盖此活动的onPause()并使用以下代码作为

@Override
public void onPause() {
    super.onPause();
    if (null != getWindow()){
        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
    }
}

答案 2 :(得分:1)

在您的活动中尝试此操作:

private void hideKeyboard() {   
    // Check if no view has focus:
    View view = this.getCurrentFocus();
    if (view != null) {
        InputMethodManager inputManager = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);
        inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
    }
}

答案 3 :(得分:1)

试试这种方式

  InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(
                        Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);

Check this link

答案 4 :(得分:0)

我终于解决了这个问题。这就是我的活动清单代码的样子:

<activity
        android:name=".ui.activities.LockScreenActivity"
        android:excludeFromRecents="true"
        android:noHistory="true"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="stateHidden"
        android:configChanges="keyboardHidden"
        android:launchMode="singleInstance"
        android:multiprocess="false"
        android:stateNotNeeded="true"
        android:taskAffinity=""
        android:theme="@style/Theme.AppCompat.Light.NoActionBar" />