2012-07-09 120 views
13

我想要做一個動作條,看上去像這樣:Android操作欄,與搜索查看

ActionBar

,我不能夠做到這一點。

我試圖用崩潰的東西here,但它不完全是我想要的。

  • 首先SearchView不可見,直到用戶按下搜索圖標..但我希望它在活動開始後立即可見。
  • 其次在SearchView出現後,所有其他動作圖標消失..但我希望它們始終可見。
  • 它只適用於android 3及更高版本,我希望它適用於android 2及更高版本,因此我使用ActionBarSherlock。

例如谷歌地圖中的動作欄看起來類似於我想要的。

有人可以告訴我如何做到這一點?

+0

這是我認爲[google地圖(谷歌地圖操作欄http://vojtechbartos.com /mapyactionbar.png) – 2012-07-09 13:19:53

+0

你想要的是添加一個自定義視圖到你的操作欄。 Api Ref:http://developer.android.com/reference/android/app/ActionBar.html#setCustomView(int) 並將其稱爲: getActionbar.setCustomView(R.layout.mySearchbar); – andreasg 2012-07-09 13:20:43

+2

謝謝!:)我做了完全像你說的..我創建了佈局search_bar.xml中有一個EditText在其中.. 然後我寫這個'actionBar = getSupportActionBar(); actionBar.setCustomView(R.layout.search_bar); actionBar.setDisplayShowCustomEnabled(true);'在activity中的onCreate方法..它的工作原理! 所以......真的謝謝你!:) – 2012-07-09 15:46:03

回答

6

如果您使用actionbarsherlock你必須做水木清華這樣

@Override 
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) { 
    menu.add(0, 1, 1, R.string.ac_refresh).setIcon(R.drawable.ic_navigation_refresh).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 
    menu.add(0, 2, 2, R.string.ac_settings).setIcon(R.drawable.ic_action_settings).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 
    menu.add(0, 3, 3, R.string.ac_favourite).setIcon(isFavouriteChannel(channel) ? R.drawable.ic_rating_important : R.drawable.ic_rating_not_important).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 
    menu.add(0, 4, 4, R.string.ac_search ).setIcon(R.drawable.ic_action_search).setActionView(R.layout.action_search) 
      .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); 

    return super.onCreateOptionsMenu(menu); 
} 

看看setActionView(R.layout.action_search) - 這是XML文件文本視圖。如果你想你的其他動作圖標apeear總是你應該使用MenuItem.SHOW_AS_ACTION_ALWAYS

+0

將它設置爲**總是**是好的提示,謝謝:) – 2012-07-09 15:56:54

14

ActionbarSherlock是一個偉大的圖書館。最新的(4.2.0)版本提供了一種方法,讓您在活動啓動時顯示可見的搜索視圖SearchView.setIconified(boolean);

所以,如果你想使你的搜索視圖始終可見,你應該使用下面的代碼:

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 

    //Create the search view 
    SearchView searchView = new SearchView(getSherlockActivity().getSupportActionBar().getThemedContext()); 
    searchView.setQueryHint("Search for countries…"); 
    searchView.setIconified(false); 

    menu.add("Search") 
      .setIcon(R.drawable.abs__ic_search) 
      .setActionView(searchView) 
      .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 


}