美文网首页Android问题汇总(遥远的回忆过去)高级UI
Android默认不弹出软键盘-需要时弹出(搜索界面)

Android默认不弹出软键盘-需要时弹出(搜索界面)

作者: MonkeyLei | 来源:发表于2019-08-02 09:41 被阅读27次

很多App搜索页面进入默认会弹出软键盘,而当搜索框有内容时(并且搜索列表存在时):此时如果点击Home键,然后再回到搜索页面,此时会弹出软键盘,有点烦的样子-测试说改下。

image

一开始我们没有配置:

android:windowSoftInputMode="adjustUnspecified|stateHidden"
android:configChanges="orientation|keyboardHidden"

启动的时候用代码弹出软键盘,然后发现了这个Home键问题时,我想着用代码隐藏,但是效果不好-会闪一下。

其实只要manifest里面配置一下就行:

    <!--默认不弹出软键盘-->
        <activity
            android:name=".activity.SearchActivity"
            android:screenOrientation="portrait"
            android:windowSoftInputMode="adjustUnspecified|stateHidden"
            android:configChanges="orientation|keyboardHidden"
            android:theme="@style/MineActivityAppTheme" />

然后用代码隐藏显示即可:

SoftKeyBoardUtil.java

  /**
     * 显示键盘
     * @param searchEt
     */
    public static void showKeyBord(EditText searchEt){
        InputMethodManager inputManager = (InputMethodManager)searchEt.getContext()
                .getSystemService(Context.INPUT_METHOD_SERVICE);
        inputManager.showSoftInput(searchEt, 0);
    }

    /**
     * 隐藏键盘
     * @param searchEt
     * @param context
     */
    public static void hideKeyBord(EditText searchEt, Activity context){
        ((InputMethodManager) searchEt.getContext()
                .getSystemService(Context.INPUT_METHOD_SERVICE))
                .hideSoftInputFromWindow(context
                                .getCurrentFocus().getWindowToken(),
                        InputMethodManager.HIDE_NOT_ALWAYS);
    }

然后oncreate里面弹出即可,别的逻辑修改即可:

    ///< 默认弹窗键盘
        Timer timer = new Timer();
        timer.schedule(new TimerTask()   {
            public void run() {
                SoftKeyBoardUtil.showKeyBord(searchEt);
            }
        }, 500);

最后:网上好像还有办法吧,比如焦点啥的...

相关文章

网友评论

    本文标题:Android默认不弹出软键盘-需要时弹出(搜索界面)

    本文链接:https://www.haomeiwen.com/subject/lkekdctx.html