Rav*_*dav 2 android android-softkeyboard android-fragments android-tabs
我用自定义类创建了标签条,我在每个标签中显示一个片段.键盘打开后我切换到Tab键,然后第二个片段被调用,但键盘没有隐藏.
我在两个片段中使用onCreateView()中的代码,但它不起作用:
//To Hide Soft
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Run Code Online (Sandbox Code Playgroud)
使用该代码的问题onCreateView()是,只要在父片段/活动中创建选项卡,就会创建在选项卡中初始化的片段.我做了标签中的片段的行为的一些调查,并意识到你有同样的问题,压倒一切的许多生命周期方法,如onViewCreated(),onResume()等
我发现解决这个问题的最佳方法是setUserVisibleHint(boolean isVisibleToUser)在片段中覆盖您希望隐藏键盘的位置.只要片段的可见性发生变化,就会调用此方法.
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
try {
InputMethodManager mImm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
mImm.hideSoftInputFromWindow(getView().getWindowToken(), 0);
mImm.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), 0);
} catch (Exception e) {
Log.e(TAG, "setUserVisibleHint: ", e);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2381 次 |
| 最近记录: |