Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android Searchable之五(使用Search Widget)

Android Searchable之五(使用Search Widget)

編輯:Android開發實例

九、使用Search Widget

Android 3.0 或更高版本中,可以使用 SearchView widget.如果你開發的程序是基於Anroid3.0且計劃使用search widget, 那麼我們建議把search widget 作為一個an action view in the Action Bar來使用, 而不是使用search dialog (也不要把search widget 放在你的activity layout中). 比如, 圖二 就是把search widget 當做Action Bar來使用的一個界面.

search widget提供了和search dialog一樣的功能. 當用戶執行搜索的時候,它會啟動合適的activity來進行處理,它也提供搜索關鍵詞建議和語言搜索.

注意當你把search widget作為action view來使用時, 你可能有時仍然需要使用search dialog, 比如有時search widg在Action Bar中也不太合適. 具體的請參照下面的”同時使用search widget和search dialog

圖二

 


 十、配置 search widget

 

首先你應該向前面講的search dialog一樣,先創建好searchable配置和searchable activity,然後為每個SearchView設置好搜索助手。你可以通過setSearchableInfo()來設置你的SearchableInfo 對象,SearchableInfo它代表的是你的searchable配置。

你可以同過SearchManager的 getSearchableInfo() 來得到 一個SearchableInfo的引用。

 

比如, 如果你想在Action Bar中把SearchView 作為一個action view來使用,那麼在 回調數onCreateOptionsMenu() 中就應該enable the widget 實例10:

 

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the options menu from XML
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.options_menu, menu);

    // Get the SearchView and set the searchable configuration
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
    searchView.setIconifiedByDefault(false);
// Do not iconify the widget; expand it by default、
    return true;
}
這樣就完了,search widget現在已經被配置好了,系統也能夠把搜索命令發送到你的searchable activity. 你也可以在 search widget中使用search suggestions。
注意: 如果你想自己處理所有用戶的輸入,請在它的回調函數和事件監聽接口方法中處理。關於SearchView 和其監聽接口,更多的內容可以參照SearchView的文檔。
關於Action Bar中action views的更多內容,請參照Using the Action Bar (裡面有把search widget作為action view來進行添加的實例代碼)
十一、search widget的其他特性
可以向SearchView 添加一些其他的特性
 
A、提交按鈕(A submit button)
默認情況下是沒提交搜索的按鈕,所以用戶必須在鍵盤上按下"Return"鍵來提交搜索.你可以同過setSubmitButtonEnabled(true)來添加一個提交按鈕("submit" button)
注:這裡 的"Return"鍵應該就是”Enter“鍵
B、自定義search suggestions
 當你使用search suggestions的時候, 你經常希望用戶僅僅是簡單選擇suggestion, 但是他們也可能想自定義suggested search query. 你可以通過調用setQueryRefinementEnabled(true),來為每個suggestion添加一個按鈕,讓用戶在search box中輸入用戶自定義的suggestion
C、讓 search box 可以見
 默認情況下, search widget是"iconified“的,只是用一個圖標 來表示它(一個放大鏡), 當用戶按下它的時候才顯示search box . 你可以調用setIconifiedByDefault(false)讓search box默認都被顯示。 你也可以調用setIconified()讓它以iconified“的形式顯示。

SearchView 中還有其他的一些API允許你個性化search widget的顯示.然而他們大多數是在你自己處理用戶輸入而不Android system處理輸入和顯示search suggestions時使用

十二、同時使用search widget和search dialog
如果你把search widget作為action view而插入到Action Bar中, 那麼你可以讓它只在有足夠空間時才以Action Bar的形式出現(通過設置android:showAsAction="ifRoom"), 這時search widget就可能不以action view的形式出現, 而是是以菜單的形式出現在overflow menu裡. 比如你的程序運行在一個小屏幕的手機上,在 Action Bar中就沒有足夠的空間把search widget和其他的action items or navigation elements顯示下。這時它們將以菜單項的形式出現在overflow menu中. 當在overflow menu中顯示的時候,該項像普通的菜單項一樣 and 它不再顯示 action view (the search widget).
為了處理該情況,當用戶選擇了和search widget關聯的menu item時,你必須激活search dialog。為了處理此事情, 你必須在onOptionsItemSelected() h處理該"Search" menu item並通過調用onSearchRequested()來開啟search dialog。

關於Action Bar如何工作和處理此中情況的更多信息請參照文檔Using the ActionBar。也可以參照search dialog 和search widget的實例Searchable Dictionary

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved