Android官方文檔—User Interface(Search)(Creating a Search Interface)

創建搜索界面

當您準備好嚮應用程序添加搜索功能時,Android會幫助您使用顯示在活動窗口頂部的搜索對話框或可以在佈局中插入的搜索窗口小部件來實現用戶界面。搜索對話框和窗口小部件都可以將用戶的搜索查詢傳遞給應用程序中的特定活動。這樣,用戶可以從搜索對話框或小部件可用的任何活動發起搜索,並且系統啓動適當的活動以執行搜索並呈現結果。

搜索對話框和小部件可用的其他功能包括:

  • 聲音搜索
  • 根據最近的查詢搜索建議
  • 搜索與您的申請數據中的實際結果相匹配的建議

本指南介紹如何使用搜索對話框或搜索小部件設置應用程序,以提供由Android系統協助提供搜索查詢的搜索界面。

基礎


在開始之前,您應該決定是使用搜索對話框還是搜索小部件來實現搜索界面。兩者都提供相同的搜索功能,但方式略有不同:

  • 搜索對話框是由Android系統控制的UI組件。當用戶激活時,搜索對話框將顯示在活動的頂部,如圖1所示。

    Android系統控制搜索對話框中的所有事件。當用戶提交查詢時,系統會將查詢傳遞給您指定用於處理搜索的活動。該對話框還可以在用戶鍵入時提供搜索建議。
  • 搜索小部件是SearchView的一個實例,您可以將其放置在佈局中的任何位置。默認情況下,搜索窗口小部件的行爲類似於標準的EditText窗口小部件,但不執行任何操作,但您可以對其進行配置,以便Android系統處理所有輸入事件,向相應活動提供查詢,並提供搜索建議(就像搜索一樣)對話)。
圖1.應用程序搜索對話框的屏幕截圖。

注意:如果需要,您可以使用各種回調方法和偵聽器自行處理搜索窗口​​小部件中的所有用戶輸入。但是,本文檔重點介紹如何將搜索小部件與系統集成以實現輔助搜索。如果您想自己處理所有用戶輸入,請閱讀SearchView及其嵌套接口的參考文檔。

當用戶從搜索對話框或搜索小部件執行搜索時,系統會創建一個Intent並將用戶查詢存儲在其中。然後,系統啓動您聲明要處理搜索的活動(“可搜索活動”)並將其傳遞給意圖。要設置此類輔助搜索的應用程序,您需要以下內容:

  • 可搜索的配置
    一個XML文件,用於配置搜索對話框或窗口小部件的某些設置。它包括搜索框的語音搜索,搜索建議和提示文本等功能的設置。
  • 可搜索的活動
    接收搜索查詢,搜索數據並顯示搜索結果的活動。
  • 或者,一個SearchView小部件
    使用搜索小部件,您可以將搜索框放在活動的任何位置。您應該通常在應用欄中將SearchView用作操作視圖,而不是將其放在活動佈局中。

本文檔的其餘部分將向您展示如何使用搜索對話框或搜索小部件創建可搜索的配置,可搜索的活動以及實現搜索界面。

創建可搜索的配置


您需要的第一件事是稱爲可搜索配置的XML文件。它配置搜索對話框或窗口小部件的某些UI方面,並定義諸如建議和語音搜索等功能的行爲。此文件傳統上命名爲searchable.xml,必須保存在res / xml / project目錄中。

注意:系統使用此文件來實例化SearchableInfo對象,但您無法在運行時自己創建此對象 - 您必須在XML中聲明可搜索的配置。

可搜索的配置文件必須包含<searchable>元素作爲根節點,並指定一個或多個屬性。例如:

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/app_label"
    android:hint="@string/search_hint" >
</searchable>

android:label屬性是唯一必需的屬性。它指向一個字符串資源,它應該是應用程序名稱。在爲快速搜索框啓用搜索建議之前,用戶實際上看不到此標籤。此時,此標籤在系統設置的可搜索項目列表中可見。

雖然不是必需的,但我們建議您始終包含android:hint屬性,該屬性在用戶輸入查詢之前在搜索框中提供提示字符串。提示非常重要,因爲它爲用戶提供了搜索內容的重要線索。

提示:爲了與其他Android應用程序保持一致,您應該將android:hint的字符串格式化爲“Search <content-or-product>”。例如,“搜索歌曲和藝術家”或“搜索YouTube”。

<searchable>元素接受其他幾個屬性。但是,在添加搜索建議和語音搜索等功能之前,您不需要大多數屬性。有關可搜索配置文件的詳細信息,請參閱“可搜索配置”參考文檔。

創建可搜索的活動


可搜索的活動是應用程序中的活動,它根據查詢字符串執行搜索並顯示搜索結果。

當用戶在搜索對話框或窗口小部件中執行搜索時,系統會啓動您的可搜索活動,並使用ACTION_SEARCH操作在Intent中提供搜索查詢。您的可搜索活動從intent的QUERY extra中檢索查詢,然後搜索您的數據並顯示結果。

由於您可以在應用程序中的任何其他活動中包含搜索對話框或窗口小部件,因此係統必須知道哪些活動是您的可搜索活動,因此它可以正確地提供搜索查詢。因此,您必須首先在Android清單文件中聲明您的可搜索活動。

聲明可搜索的活動

如果您還沒有,請創建一個將執行搜索並顯示結果的活動。您不需要實現搜索功能 - 只需創建一個可以在清單中聲明的​​活動。在清單的<activity>元素內:

1.在<intent-filter>元素中聲明活動以接受ACTION_SEARCH目的。

2.在<meta-data>元素中指定要使用的可搜索配置。

例如:

<application ... >
    <activity android:name=".SearchableActivity" >
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <meta-data android:name="android.app.searchable"
                   android:resource="@xml/searchable"/>
    </activity>
    ...
</application>

<meta-data>元素必須包含值爲“android.app.searchable”的android:name屬性和包含對可搜索配置文件的引用的android:resource屬性(在此示例中,它指的是res / xml / searchable.xml文件)。

執行搜索

在清單中聲明可搜索的活動後,在可搜索的活動中執行搜索涉及三個步驟:

1.Receiving the query

2.Searching your data

3.Presenting the results

傳統上,您的搜索結果應該以ListView的形式呈現,因此您可能希望您的可搜索活動擴展ListActivity。它包含一個帶有單個ListView的默認佈局,並提供了一些使用ListView的便捷方法。

接收查詢

當用戶從搜索對話框或窗口小部件執行搜索時,系統會啓動您的可搜索活動並向其發送ACTION_SEARCH目的。此意圖在QUERY字符串extra中包含搜索查詢。您必須在活動開始時檢查此意圖並提取字符串。例如,以下是您可搜索活動開始時如何獲取搜索查詢:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.search);

    // Get the intent, verify the action and get the query
    Intent intent = getIntent();
    if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
      String query = intent.getStringExtra(SearchManager.QUERY);
      doMySearch(query);
    }
}

QUERY字符串始終包含在ACTION_SEARCH目標中。在此示例中,檢索查詢並將其傳遞到本地doMySearch()方法,在該方法中完成實際的搜索操作。

搜索您的數據

存儲和搜索數據的過程對您的應用程序而言是獨一無二的。您可以通過多種方式存儲和搜索數據,但本指南未向您展示如何存儲數據並進行搜索。根據您的需求和數據格式,您應該仔細考慮存儲和搜索數據。但是,以下是您可以應用的一些提示:

  • 如果您的數據存儲在設備上的SQLite數據庫中,則執行全文搜索(使用FTS3而不是LIKE查詢)可以跨文本數據提供更強大的搜索,並且可以顯着更快地生成結果。有關FTS3和SQLiteDatabase類的信息,請參閱sqlite.org以獲取有關Android上SQLite的信息。另請參閱Searchable Dictionary示例應用程序,以查看使用FTS3執行搜索的完整SQLite實現。
  • 如果您的數據是在線存儲的,那麼用戶的數據連接可能會阻止感知的搜索性能。在搜索返回之前,您可能希望顯示旋轉的進度輪。有關如何顯示進度輪的信息,請參閱android.net以獲取網絡API的參考和創建進度對話框。

無論您的數據位於何處以及如何搜索,我們都建議您使用適配器將搜索結果返回到可搜索的活動。這樣,您就可以輕鬆地在ListView中顯示所有搜索結果。如果您的數據來自SQLite數據庫查詢,則可以使用CursorAdapter將結果應用於ListView。如果您的數據採用其他類型的格式,則可以創建BaseAdapter的擴展。

關於適配器

適配器將一組數據中的每個項綁定到一個View對象。將適配器應用於ListView時,每個數據作爲單獨的視圖插入到列表中。適配器只是一個接口,因此需要諸如CursorAdapter(用於綁定來自Cursor的數據)的實現。如果現有實現都不適用於您的數據,那麼您可以從BaseAdapter實現自己的實現。安裝API Level 4的SDK Samples包以查看Searchable Dictionary的原始版本,該版本創建一個自定義適配器以從文件中讀取數據。

展示結果

如上所述,搜索結果的推薦UI是ListView,因此您可能希望可搜索的活動擴展ListActivity。然後,您可以調用setListAdapter(),向其傳遞綁定到您的數據的適配器。這會將所有搜索結果注入活動ListView。

有關在列表中顯示結果的更多幫助,請參閱ListActivity文檔。

另請參閱Searchable Dictionary示例,以獲得如何搜索SQLite數據庫並使用適配器在ListView中提供結果的完整演示。

使用“搜索”對話框


搜索對話框在屏幕頂部提供了一個浮動搜索框,左側是應用程序圖標。搜索對話框可以在用戶鍵入時提供搜索建議,並且當用戶執行搜索時,系統將搜索查詢發送到執行搜索的可搜索活動。但是,如果您正在爲運行Android 3.0的設備開發應用程序,則應考慮使用搜索窗口小部件(請參閱使用“搜索窗口小部件”部分)。

默認情況下,搜索對話框始終處於隱藏狀態,直到用戶激活它。您的應用程序可以通過調用onSearchRequested()來激活搜索對話框。但是,在爲活動啓用搜索對話框之前,此方法不起作用。

要啓用搜索對話框,您必須向系統指明哪些可搜索活動應從搜索對話框接收搜索查詢,以便執行搜索。例如,在上一節“創建可搜索活動”中,創建了一個名爲SearchableActivity的可搜索活動。如果您想要一個名爲OtherActivity的單獨活動來顯示搜索對話框並將搜索提供給SearchableActivity,則必須在清單中聲明SearchableActivity是可用於OtherActivity中搜索對話框的可搜索活動。

要爲活動的搜索對話框聲明可搜索活動,請在相應活動的<activity>元素內添加<meta-data>元素。 <meta-data>元素必須包含指定可搜索活動的類名的android:value屬性和值爲“android.app.default_searchable”的android:name屬性。

例如,下面是可搜索活動SearchableActivity和另一個活動OtherActivity的聲明,它使用SearchableActivity執行從搜索對話框執行的搜索:

<application ... >
    <!-- this is the searchable activity; it performs searches -->
    <activity android:name=".SearchableActivity" >
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <meta-data android:name="android.app.searchable"
                   android:resource="@xml/searchable"/>
    </activity>

    <!-- this activity enables the search dialog to initiate searches
         in the SearchableActivity -->
    <activity android:name=".OtherActivity" ... >
        <!-- enable the search dialog to send searches to SearchableActivity -->
        <meta-data android:name="android.app.default_searchable"
                   android:value=".SearchableActivity" />
    </activity>
    ...
</application>

由於OtherActivity現在包含一個<meta-data>元素來聲明要用於搜索的可搜索活動,因此該活動已啓用搜索對話框。當用戶處於此活動時,onSearchRequested()方法將激活搜索對話框。當用戶執行搜索時,系統啓動SearchableActivity並向其傳遞ACTION_SEARCH意圖。

注意:默認情況下,可搜索活動本身提供搜索對話框,因此您無需將此聲明添加到SearchableActivity。

如果希望應用程序中的每個活動都提供搜索對話框,請將上面的<meta-data>元素作爲<application>元素的子元素插入,而不是每個<activity>。這樣,每個活動都會繼承該值,提供搜索對話框,並將搜索提供給相同的可搜索活動。 (如果您有多個可搜索的活動,則可以通過在各個活動中放置不同的<meta-data>聲明來覆蓋默認的可搜索活動。)

現在,您的活動已啓用搜索對話框,您的應用程序已準備好執行搜索。

調用搜索對話框

雖然某些設備提供專用的搜索按鈕,但按鈕的行爲可能因設備而異,許多設備根本不提供“搜索”按鈕。因此,在使用搜索對話框時,您必須在UI中提供一個搜索按鈕,通過調用onSearchRequested()來激活搜索對話框。

例如,您應在選項菜單或UI佈局中添加一個調用onSearchRequested()的搜索按鈕。爲了與Android系統和其他應用程序保持一致,您應該使用操作欄圖標包中提供的Android搜索圖標標記您的按鈕。

注意:如果您的應用使用了應用欄,則不應將搜索對話框用於搜索界面。而是將搜索小部件用作應用欄中的可摺疊視圖。

您還可以啓用“類型到搜索”功能,當用戶開始在鍵盤上鍵入時,該功能會激活搜索對話框 - 鍵擊將插入到搜索對話框中。您可以在活動的onCreate()方法中調用setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL),在活動中啓用類型到搜索。

搜索對話框對您的活動生命週期的影響

搜索對話框是一個浮動在屏幕頂部的對話框。它不會導致活動堆棧發生任何變化,因此當出現搜索對話框時,不會調用任何生命週期方法(例如onPause())。您的活動只會丟失輸入焦點,因爲輸入焦點會顯示在搜索對話框中。

如果要在激活搜索對話框時收到通知,請覆蓋onSearchRequested()方法。當系統調用此方法時,表示您的活動已將輸入焦點丟失到搜索對話框,因此您可以執行適合該事件的任何工作(例如暫停遊戲)。除非您傳遞搜索上下文數據(如下所述),否則您應該通過調用超類實現來結束該方法。例如:

@Override
public boolean onSearchRequested() {
    pauseSomeStuff();
    return super.onSearchRequested();
}

如果用戶通過按“返回”按鈕取消搜索,則搜索對話框將關閉,活動將重新獲得輸入焦點。您可以註冊以在使用setOnDismissListener()和/或setOnCancelListener()關閉搜索對話框時收到通知。您應該只需要註冊OnDismissListener,因爲每次搜索對話框關閉時都會調用它。 OnCancelListener僅適用於用戶顯式退出搜索對話框的事件,因此在執行搜索時不會調用它(在這種情況下,搜索對話框自然會消失)。

如果當前活動不是可搜索的活動,則一旦用戶執行搜索(當前活動接收onPause()等,則觸發正常活動生命週期事件,如活動文檔中所述)。但是,如果當前活動是可搜索的活動,則會發生以下兩種情況之一:

a.默認情況下,可搜索活動通過調用onCreate()接收ACTION_SEARCH意圖,並將活動的新實例帶到活動堆棧的頂部。現在,活動堆棧中存在兩個可搜索活動的實例(因此,按“返回”按鈕將返回到可搜索活動的上一個實例,而不是退出可搜索活動)。

b.如果將android:launchMode設置爲“singleTop”,則可搜索活動通過調用onNewIntent(Intent)接收ACTION_SEARCH意圖,並在此處傳遞新的ACTION_SEARCH意圖。例如,以下是您可以處理這種情況的方法,其中可搜索活動的啓動模式爲“singleTop”:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.search);
    handleIntent(getIntent());
}

@Override
protected void onNewIntent(Intent intent) {
    setIntent(intent);
    handleIntent(intent);
}

private void handleIntent(Intent intent) {
    if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
      String query = intent.getStringExtra(SearchManager.QUERY);
      doMySearch(query);
    }
}

與“執行搜索”一節中的示例代碼相比,處理搜索意圖的所有代碼現在都在handleIntent()方法中,因此onCreate()和onNewIntent()都可以執行它。

當系統調用onNewIntent(Intent)時,活動尚未重新啓動,因此getIntent()方法返回與onCreate()一起接收的相同意圖。這就是你應該在onNewIntent(Intent)中調用setIntent(Intent)的原因(以便在將來調用getIntent()時更新活動保存的意圖)。

使用“singleTop”啓動模式的第二種情況通常是理想的,因爲一旦搜索完成,用戶將執行額外的搜索,如果您的應用程序創建可搜索活動的多個實例,那麼這是一種糟糕的體驗。因此,我們建議您在應用程序清單中將可搜索活動設置爲“singleTop”啓動模式。例如:

<activity android:name=".SearchableActivity"
          android:launchMode="singleTop" >
    <intent-filter>
        <action android:name="android.intent.action.SEARCH" />
    </intent-filter>
    <meta-data android:name="android.app.searchable"
                      android:resource="@xml/searchable"/>
  </activity>

傳遞搜索上下文數據

在某些情況下,對於每次搜索,您都可以對可搜索活動內的搜索查詢進行必要的優化。但是,如果要根據用戶執行搜索的活動優化搜索條件,則可以在系統發送到可搜索活動的意圖中提供其他數據。您可以傳遞APP_DATA包中的附加數據,該包含在ACTION_SEARCH目的中。

要將此類數據傳遞給可搜索的活動,請覆蓋用戶可以執行搜索的活動的onSearchRequested()方法,使用其他數據創建Bundle,並調用startSearch()以激活搜索對話框。例如:

@Override
public boolean onSearchRequested() {
     Bundle appData = new Bundle();
     appData.putBoolean(SearchableActivity.JARGON, true);
     startSearch(null, false, appData, false);
     return true;
 }

返回“true”表示您已成功處理此回調事件並調用startSearch()以激活搜索對話框。用戶提交查詢後,會將其與您添加的數據一起發送到您的可搜索活動。您可以從APP_DATA Bundle中提取額外數據以優化搜索。例如:

Bundle appData = getIntent().getBundleExtra(SearchManager.APP_DATA);
if (appData != null) {
    boolean jargon = appData.getBoolean(SearchableActivity.JARGON);
}

注意:切勿從onSearchRequested()回調方法外部調用startSearch()方法。要激活活動中的搜索對話框,請始終調用onSearchRequested()。否則,不會調用onSearchRequested(),並且會錯過自定義(例如上例中添加的appData)。

使用搜索小組件


圖2. SearchView小部件作爲Action Bar中的“action view”。

SearchView小部件在Android 3.0及更高版本中可用。如果您正在開發Android 3.0應用程序並決定使用搜索小部件,我們建議您將搜索小部件作爲操作視圖插入應用欄,而不是使用搜索對話框(而不是放置搜索小部件)在你的活動佈局中)。例如,圖2顯示了應用欄中的搜索小部件。

搜索小部件提供與搜索對話框相同的功能。它在用戶執行搜索時啓動適當的活動,並且可以提供搜索建議並執行語音搜索。如果您不能將搜索小部件放在操作欄中,則可以將搜索小部件放在活動佈局中的某個位置。

注意:當您將搜索窗口小部件用作操作視圖時,對於搜索窗口小部件不適合操作欄的情況,您仍可能需要支持使用搜索對話框。請參閱以下有關使用窗口小部件和對話框的部分。

配置搜索小部件

在您創建了可搜索的配置和可搜索的活動之後,如上所述,您需要爲每個SearchView啓用輔助搜索。您可以通過調用setSearchableInfo()並向其傳遞代表您的可搜索配置的SearchableInfo對象來完成此操作。

您可以通過在SearchManager上調用getSearchableInfo()來獲取對SearchableInfo的引用。

例如,如果您在應用欄中使用SearchView作爲操作視圖,則應在onCreateOptionsMenu()回調期間啓用該窗口小部件:

@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();
    // Assumes current activity is the searchable activity
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
    searchView.setIconifiedByDefault(false); // Do not iconify the widget; expand it by default

    return true;
}

這就是你所需要的一切。現在已配置搜索窗口小部件,系統將爲您的可搜索活動提供搜索查詢。您還可以爲搜索小部件啓用搜索建議。

注意:如果您想自己處理所有用戶輸入,可以使用一些回調方法和事件偵聽器。有關更多信息,請參閱SearchView的參考文檔及其相應事件偵聽器的嵌套接口。

有關操作欄中操作視圖的更多信息,請參閱操作視圖和操作提供程序。

其他搜索小部件功能

SearchView小部件允許您可能需要的一些其他功能:

提交按鈕

默認情況下,沒有提交搜索查詢的按鈕,因此用戶必須按鍵盤上的“返回”鍵才能啓動搜索。您可以通過調用setSubmitButtonEnabled(true)添加“提交”按鈕。

搜索建議的查詢細化

當您啓用搜索建議時,通常希望用戶只需選擇一個建議,但他們可能還希望優化建議的搜索查詢。您可以通過調用setQueryRefinementEnabled(true)在每個建議旁添加一個按鈕,該建議在搜索框中插入建議以供用戶進行優化。

能夠切換搜索框可見性

默認情況下,搜索小部件是“圖標化”,意味着它僅由搜索圖標(放大鏡)表示,並在用戶觸摸時展開以顯示搜索框。如上所示,您可以通過調用setIconifiedByDefault(false)默認顯示搜索框。您還可以通過調用setIconified()來切換搜索小部件外觀。

SearchView類中還有其他幾個API,允許您自定義搜索小部件。但是,大多數只在您自己處理所有用戶輸入時使用,而不是使用Android系統提供搜索查詢和顯示搜索建議。

同時使用小部件和對話框

如果您將操作欄中的搜索小部件作爲操作視圖插入,並啓用它以顯示在操作欄中“如果有空間”(通過設置android:showAsAction =“ifRoom”),那麼有可能搜索窗口小部件不會顯示爲操作視圖,但菜單項將顯示在溢出菜單中。例如,當您的應用程序在較小的屏幕上運行時,操作欄中可能沒有足夠的空間來顯示搜索小部件以及其他操作項或導航元素,因此菜單項將顯示在溢出菜單中。當放置在溢出菜單中時,該項目就像普通菜單項一樣工作,並且不顯示操作視圖(搜索小部件)。

要處理這種情況,當用戶從溢出菜單中選擇搜索對話框時,您附加搜索窗口小部件的菜單項應激活搜索對話框。爲了實現這一點,您必須實現onOptionsItemSelected()來處理“搜索”菜單項並通過調用onSearchRequested()打開搜索對話框。

有關操作欄中的項目如何工作以及如何處理此情況的詳細信息,請參閱操作欄開發人員指南。

另請參閱Searchable Dictionary以獲取使用對話框和窗口小部件的示例實現。

添加語音搜索


您可以通過將android:voiceSearchMode屬性添加到可搜索的配置中,將語音搜索功能添加到搜索對話框或小部件中。這會添加一個語音搜索按鈕,用於啓動語音提示。當用戶完成發言後,轉錄的搜索查詢將發送到您的可搜索活動。

例如:

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/search_label"
    android:hint="@string/search_hint"
    android:voiceSearchMode="showVoiceSearchButton|launchRecognizer" >
</searchable>

值showVoiceSearchButton是啓用語音搜索所必需的,而第二個值launchRecognizer指定語音搜索按鈕應啓動識別器,該識別器將轉錄的文本返回到可搜索的活動。

您可以提供其他屬性來指定語音搜索行爲,例如預期的語言和要返回的最大結果數。有關可用屬性的更多信息,請參見“可搜索的配置”參考。

注意:請仔細考慮語音搜索是否適合您的應用程序。使用語音搜索按鈕執行的所有搜索都會立即發送到您的可搜索活動,而用戶無需查看轉錄的查詢。充分測試語音識別並確保它瞭解用戶可能在您的應用程序中提交的查詢類型。

添加搜索建議


在Android系統的幫助下,搜索對話框和搜索小部件都可以在用戶輸入時提供搜索建議。系統管理建議列表並在用戶選擇建議時處理事件。

您可以提供兩種搜索建議:

最近的查詢搜索建議

這些建議只是用戶以前在您的應用程序中用作搜索查詢的單詞。

請參閱添加最近查詢建議。

自定義搜索建議

這些是您從自己的數據源提供的搜索建議,以幫助用戶立即選擇正在搜索的正確拼寫或項目。圖3顯示了字典應用程序的自定義建議示例 - 用戶可以選擇建議立即轉到定義。

請參閱添加自定義建議

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章