2012-01-25 82 views
0

當我在設備上按下搜索鍵時,我希望它顯示白色背景。但是,當我按下後退按鈕時,我希望恢復先前活動的背景。 ivBackground是我添加到我的relativelayout中的一個變量,我將VISIBLE顯示爲白色背景。Android:按下搜索按鈕時顯示白色背景

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); 
} 

雖然上面的代碼工作,問題是,當我按下返回按鈕,白屏仍然存在。如果我再次按下後退按鈕,它只會消失。任何解決方案

回答

1

在相關活動上,您可以獲得對SearchManager對象的引用。在此,您可以設置一個OnDismissListener,這就是所謂的搜索UI關閉時的情況,例如

this.searchMgr = (SearchManager)this.getSystemService(Context.SEARCH_SERVICE); 
this.searchMgr.setOnDismissListener(new OnDismissListener() { 
    public void onDismiss() { 
     ivBackground.setVisibility(View.GONE); 
    } 
}); 

爲了使白色背景可見,當用戶信號的願望開始搜索

@Override 
public boolean onSearchRequested() { 
    ivBackground.setVisibility(View.VISIBLE); 
    return super.onSearchRequested(); 
} 

希望這有助於你可以重寫onSearchRequested您的活動類,這就是所謂的內部!

+0

謝謝,那就是訣竅。 – OckhamsRazor

0

如何設置SearchView.OnCloseListenerSearchManager.OnDismissListener也隱藏您的視圖?無論如何,這似乎是正確的解決方案,因爲這兩個事件在邏輯上是連接的。例如,如果您稍後以編程方式關閉搜索視圖,則不必擔心分開關閉背景視圖。

+0

這並不能解決問題,因爲搜索欄本身沒有顯示。 – OckhamsRazor

相關問題