2012-06-14 53 views
5

我正在使用Actionbar Sherlock。在啓動時顯示的活動應以「搜索模式」開始,以立即開始搜索。爲此,我使用以下代碼:Actionbar Sherlock搜索Widget展開不起作用

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    super.onCreateOptionsMenu(menu); 

    //collapse search 
    MenuItem searchItem = menu.add(Menu.NONE, R.string.inlineSearch, Menu.NONE, getString(R.string.inlineSearch)).setIcon(R.drawable.menu_search); 
    searchItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
    searchView = new SearchView(this); 
    searchItem.setActionView(new SearchView(this)); 
    searchItem.expandActionView(); 
    return true; 
} 

SearchView是由Android/Actionbar Sherlock提供的視圖。

我面臨的問題是,無論我做什麼,該項目在啓動時都不會展開。 我嘗試通過使用其他操作欄項目啓動後調用expandActionView方法,沒有任何更改。 我實現了自己的View實現CollapsibleActionView,但onActionViewExpanded()和onActionViewCollapsed()方法永遠不會被調用。

但是,如果我單擊SearchView的摺疊按鈕,視圖將按預期展開。

有誰知道我在做什麼錯?謝謝你的幫助!

回答

14

在閱讀源文檔後,我終於自己找到了答案。 menuItem.expandActionView()只有在MenuItem設置了以下標誌時纔會生效:searchItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);

希望能幫助某個人!

+0

是否能夠將搜索框擴展到動作欄的整個寬度? –

+1

在這個答案中,你是否仍在使用操作欄Sherlock搜索視圖或上面提到的自定義視圖? – pjv

+0

唯一的區別是setShowAsAction的更改,視圖仍然是由actionbar提供的搜索視圖sherlock – user1033552