Android:按下搜索按钮时显示白色背景

时间:2012-01-25 09:24:39

标签: android

当我按下设备上的搜索键时,我希望它显示白色背景。但是,当我按下后退按钮时,我希望恢复之前活动的背景。 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);
 } 

虽然上面的代码有效,但问题是当我按下后退按钮时,白色屏幕仍然存在。如果我再次按下后退按钮,它就会消失。任何解决方案?

2 个答案:

答案 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.OnCloseListenerSearchManager.OnDismissListener?这似乎是正确的解决方案,因为这两个事件是逻辑连接的。例如,如果您稍后以编程方式关闭搜索视图,则无需担心单独关闭背景视图。