Android 当用户触摸活动内的片段时隐藏键盘
在.xml布局中,我有3个组件,顺序如下:Android 当用户触摸活动内的片段时隐藏键盘,android,android-fragments,keyboard,Android,Android Fragments,Keyboard,在.xml布局中,我有3个组件,顺序如下: 文本视图 片段(扩展ListFragment) 存储2个按钮的线性布局 每当用户使用搜索栏进行查询时,键盘就会出现。片段的内容将根据查询进行更新 我想做的是每当用户轻触屏幕(在键盘外面),键盘需要隐藏。到目前为止,我只能点击任何地方,而不是片段区域 我在片段中尝试了setOnTouchListener内部onActivityCreated(),但似乎不起作用 我在fragment=hidding键盘外点击,使用以下内部onCreate(): 隐藏板
- 文本视图
- 片段(扩展ListFragment)
- 存储2个按钮的线性布局
setOnTouchListener
内部onActivityCreated()
,但似乎不起作用
我在fragment=hidding键盘外点击,使用以下内部onCreate()
:
隐藏板(视图)
但不是在碎片里面…我犯了一个愚蠢的错误 以下代码将解决此问题: 内部
onActivityCreated()
编辑:Nevermind。。。。仅当查询显示零结果时,上述操作才起作用。如果它显示至少一个结果,触摸片段区域仍然不会隐藏键盘我知道这有点晚了。根据我对你问题的理解,以下是解决方案。在onCreateView中使用以下代码
//hides keyboard when tap on the screen
view.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_MOVE){
//do something
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), 0);
}
return true;
}
});
public void hideKeyboard(View view)
{
InputMethodManager in = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
in.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
getActivity().findViewById(R.id.mid).setOnTouchListener(new View.OnTouchListener()
{
@Override
public boolean onTouch(View dview, MotionEvent ev)
{
f_hideKeyboard(dview);
return false;
}
});
//hides keyboard when tap on the screen
view.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_MOVE){
//do something
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), 0);
}
return true;
}
});