2012-01-25 8 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.OnCloseListenerまたはSearchManager.OnDismissListenerを設定するとどうなりますか?これは、2つのイベントが論理的に接続されているため、とにかく適切なソリューションのようです。たとえば、後で検索ビューをプログラムで却下した場合、バックグラウンドビューを個別に破棄することを心配する必要はありません。

+0

検索バー自体が表示されないため、このトリックはありません。 – OckhamsRazor

関連する問題