2013-04-24 32 views
6

我已經在搜索菜單的操作欄中使用了Sherlock搜索視圖控件。用於初始化搜索視圖的代碼片段如何禁用搜索視圖的倒塌按回車鍵android

 MenuItem item = menu.findItem(R.id.menu_search); 
    item.expandActionView(); 
    mSearchView = (SearchView) item.getActionView(); 
    mSearchView.setIconifiedByDefault(false); 
    mSearchView.setQuery(query, false); 
    mSearchView.clearFocus(); 

上述代碼顯示具有默認搜索查詢的擴展搜索視圖。問題是當我按下搜索視圖時再次按下按鈕,在返回到之前在android中的活動之前崩潰。我不希望搜索視圖在後退按鍵上摺疊。如何防止搜索視圖崩潰後按鍵?

+0

http://stackoverflow.com/questions/9629313/auto- collapse-actionbar-searchview-on-soft-keyboard-close – 2013-04-24 10:49:26

+0

上面的帖子與我的pr不一樣oblem。我的搜索視圖會在按下後按鍵時摺疊。我必須禁用此默認行爲。我不希望搜索視圖崩潰,它應該始終擴展?任何建議? – user1526671 2013-04-24 10:55:03

+0

你得到了這個答案嗎? – 2015-10-27 23:30:46

回答

0

添加一個布爾值,當搜索視圖打開這樣

private Boolean isSearchPageIsOpen = true; 

然後添加甚至處理後退按鈕按下

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     switch (keyCode) { 
     case KeyEvent.KEYCODE_BACK: 
      if(isSearchPageIsOpen){ 

       do something here 
     } 
     return false; 
+1

搜索查看後臺按下不會調用onKeydown Overriden方法 – user1526671 2013-04-24 10:56:31

0

SearchView.setIconifiedByDefault(false)應該是不夠的,如果你已經設置的屬性android:showAsAction="always"你的菜單xml。

下面的片段爲我工作:

default_options.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    <item android:id="@+id/action_search" 
     android:title="@string/search" 
     android:icon="@drawable/topbar_busqueda" 
     androidshowAsAction="always" 
     android:actionViewClass="android.support.v7.widget.SearchView" /> 
</menu> 

活動

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.default_options menu); 
    MenuItem menuItem = menu.findItem(R.id.action_search); 
    SearchView searchView = (SearchView) menuItem.getActionView(); 
    prepareSearchViewAdapter(searchView, menuItem); 
    super.onCreateOptionsMenu(menu, inflater); 
} 

private void prepareSearchViewAdapter(final SearchView searchView, MenuItem menuItem) { 
    searchView.setIconifiedByDefault(false); 
}