在.xml布局中,我按以下顺序拥有3个组件:
每当用户使用搜索栏进行查询时,都会出现键盘。片段的内容将根据查询进行更新。
我尝试做什么是指用户点击屏幕(键盘外),需要隐藏键盘。到目前为止,我只能点击但片段区域。
我在片段内的setOnTouchListener
内尝试onActivityCreated()
,但它似乎无法正常工作。
我在fragment = hidding键盘外部使用onCreate()
内的以下内容进行操作:
layout.setOnTouchListener(new View.OnTouchListener()
{
@Override
public boolean onTouch(View view, MotionEvent ev)
{
hideKeyboard(view);
return false;
}
});
hideKeyboard(查看视图)
public void hideKeyboard(View view)
{
InputMethodManager in = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
in.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
但不在片段内...
答案 0 :(得分:0)
我犯了一个愚蠢的错误......
以下代码可以解决此问题:
在onActivityCreated()
getActivity().findViewById(R.id.mid).setOnTouchListener(new View.OnTouchListener()
{
@Override
public boolean onTouch(View dview, MotionEvent ev)
{
f_hideKeyboard(dview);
return false;
}
});
已编辑:没关系......上述内容仅在查询显示为零时才有效。如果它显示至少1个结果,则触摸片段区域仍然不会隐藏键盘
答案 1 :(得分:0)
我知道有点晚了。根据我对你的问题的理解,下面是解决方案。在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;
}
});