Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android Searchable之三

Android Searchable之三

編輯:Android開發實例

五、使用Search Dialog

search dialog提供了一個上浮在屏幕上方的搜索條,應用程序的圖標顯示在搜索條的左邊。當用戶在輸入的時候,它可以提供建議的搜索關鍵字。 當用戶自行搜索的時候,系統會把它的搜索關鍵字searchable activity來執行真正的搜索。 但是如果你的設備使用的是Android 3.0,(或更高版本),你可以考慮使用search widget。 search dialog默認是隱藏的,直到用戶激活它。如果用法的手機上有SEARCH按鈕,那麼按下該鍵,默認是激活search dialog。 為了使用search dialog,你必須想系統說明哪個searchable activity將受到該search dialog的搜索請求,以便執行搜索。比如,在示例2中,是名叫SearchableActivity的searchable activity,當然同時使用search dialog的也是它。如果你想使用其他的actvitity來顯示search dialog的, 比如名字為OtherActivity, 讓它來顯示search dialog 並把搜索請求傳遞給SearchableActivity, 你必須在manifest中聲明一個searchable activity (比如SearchableActivity)來接收OtherActivity中的search dialog的搜索請求. 為一個activity的search dialog聲明searchable activity,你需要在AndroidManifest.xml中代表該activity的<activity> 元素中加入<meta-data> 這個<meta-data>必須包含“android:value”屬性,該屬性指明了searchable activity的類名, 還必須包括屬性“android:name”,且其值必須為 "android.app.default_searchable". 下面的例子就聲明了兩個searchable activity(SearchableActivity和OtherActivity),  OtherActivity也是在它的search dialog中使用SearchableActivity執行searches操作。 示例4 <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>元素,它聲明了使用哪個searchable activity來執行搜索,所以它的search dialog也變得可用。按下手機的SEARCH按鈕(如果有的話)或調用onSearchRequested()都將激活search dialog.
一旦用戶在search dialog中執行search操作, 系統將啟動SearchableActivity 並向其傳送ACTION_SEARCH intent.
提示:searchable activity 自己默認就提供了the search dialog ,且它的searchable activity就是自己本身,所以不需要再聲明.

如果你想為你的應用程序的每個activity 都提供該search dialog, 那麼請 <meta-data> 元素加入 <application> 作為其兒子, 而不是加入到每個<activity>. 通過這種方式, 每個activity 都繼承了該值, 提供search dialog, 並把searches傳送到同一個searchable activity. (如果你有多個searchable activities, 你可以在單個activitiy中加入不同的<meta-data>來聲明searchable activity,這樣就重寫了默認的searchable activity )

六、如何啟動search dialog

正如上面所提到的,如果當前activity聲明了使用searchable activity,那麼按下手機的SEARCH按鈕(如果有的話)或調用onSearchRequested()都將激活search dialog.

然而,SEARCH按鈕並不是所有的設備上都有,所以你需要在你的UI中提供一個搜索按鈕,

以便通過調用onSearchRequested()激活search dialog 。

例如,你可以在Options Menu的一個菜單項或在你的activity的布局的按鈕中調用onSearchRequested()來啟動search dialog.

search_icons.zip 文件中有針對medium and high density屏幕的搜索圖標,你可以在你的搜索菜單項或按鈕中使用它(low-density screens scale-down the hdpi image by one half).

你也可以使用"type-to-search"功能, 這樣當用戶在鍵盤進行輸入的時候,將激活search dialog,並且是直接輸入到search dialog.

你可以在activity的onCreate() 中調用setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL)來開啟該功能

 

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