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

一开始我们没有配置:
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);
最后:网上好像还有办法吧,比如焦点啥的...
网友评论