当我按下设备上的搜索键时,我希望它显示白色背景。但是,当我按下后退按钮时,我希望恢复之前活动的背景。 ivBackground
是我添加到我的relativelayout的一个变量,我将其变为VISIBLE以显示白色背景。
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_SEARCH) {
ivBackground.setVisibility(View.VISIBLE);//WHITE IMAGEVIEW
return false;
} else if (keyCode == KeyEvent.KEYCODE_BACK) {
ivBackground.setVisibility(View.GONE);
return true;
}
return super.onKeyDown(keyCode, event);
}
虽然上面的代码有效,但问题是当我按下后退按钮时,白色屏幕仍然存在。如果我再次按下后退按钮,它就会消失。任何解决方案?
答案 0 :(得分:1)
在相关活动上,您可以获得对SearchManager对象的引用。在此,你可以设置OnDismissListener
,这被称为当搜索UI被解雇时,例如。
this.searchMgr = (SearchManager)this.getSystemService(Context.SEARCH_SERVICE);
this.searchMgr.setOnDismissListener(new OnDismissListener() {
public void onDismiss() {
ivBackground.setVisibility(View.GONE);
}
});
要使白色背景可见,您可以覆盖活动类中的onSearchRequested
,当用户表示希望开始搜索时调用该活动类
@Override
public boolean onSearchRequested() {
ivBackground.setVisibility(View.VISIBLE);
return super.onSearchRequested();
}
希望这有帮助!
答案 1 :(得分:0)
如何设置同时隐藏视图的SearchView.OnCloseListener或SearchManager.OnDismissListener?这似乎是正确的解决方案,因为这两个事件是逻辑连接的。例如,如果您稍后以编程方式关闭搜索视图,则无需担心单独关闭背景视图。