Android開發——Android搜索框架

Android是google的產品,所以自然是少不了搜索。先看看Android一些應用中的搜索對話框。

圖1 Android中的全局搜索

圖2 聯繫人搜索

圖3 音樂搜索

以上都是通過按下實體鍵盤上的搜索按鈕彈出的一個搜索對話框,當然搜索關鍵詞提示是少不了的。如何實現呢?慢慢來!呵呵。

一、配置搜索描述文件

在res中的xml文件加創建sreachable.xml,內容如下:

   
  1. <searchable xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:label="@string/search_label"
  3. android:hint="@string/search_hint"
  4. android:searchSettingsDescription="@string/settings_description">
  5. </searchable>
複製代碼

二、創建SearchableMusicActivity.java

至少需要實現onCreate方法顯示出來吧。

三、配置AndroidManifest.xml

  
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.halzhang.android.search" android:versionCode="1"
  4. android:versionName="1.0">
  5. <application android:icon="@drawable/icon" android:label="@string/app_name">
  6. <activity android:name=".SearchableMusicActivity"
  7. android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar">
  8. <intent-filter>
  9. <action android:name="android.intent.action.MAIN" />
  10. <category android:name="android.intent.category.LAUNCHER" />
  11. </intent-filter>
  12. <intent-filter>
  13. <!-- 配置action -->
  14. <action android:name="android.intent.action.SEARCH" />
  15. </intent-filter>
  16. <!-- 指定搜索的配置文件 -->
  17. <meta-data android:name="android.app.searchable"
  18. android:resource="@xml/searchable" />
  19. </activity>
  20. <meta-data android:name="android.app.default_searchable"
  21. android:value=".SearchableMusicActivity" />
複製代碼


通過以上三步就能實現搜索對話框了。

接下來會講到搜索關鍵字提示,先到這裏。

-----------------EOF-------------------

1.創建搜索建議提供者
Android已經爲我們創建了一個默認的,我們只需要繼承 SearchRecentSuggestionProvider 就稍做修改就可以了。
見代碼:
  1. import android.content.SearchRecentSuggestionsProvider;

  2. /**
  3. * 搜索提示

  4. * @author Hanguo
  5. * http://t.sina.com.cn/halzhang
  6. * @version 2011-1-5上午11:51:39
  7. */
  8. public class SearchSuggestionsProvider extends SearchRecentSuggestionsProvider {
  9. //記住這個哦
  10. public final static String AUTHORITY = "searchprovider";

  11. public final static int MODE = DATABASE_MODE_QUERIES;

  12. public SearchSuggestionsProvider() {
  13. setupSuggestions(AUTHORITY, MODE);
  14. }
  15. }
複製代碼

  

2.配置searchable.xml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <searchable xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:label="@string/search_label" 
  4. android:hint="@string/search_hint"
  5. android:searchSettingsDescription="@string/search_settings_description"
  6. android:searchSuggestAuthority="searchprovider"
  7. android:searchSuggestIntentAction="android.intent.action.SEARCH"
  8. android:searchSuggestThreshold="1"
  9. android:includeInGlobalSearch="true"
  10. android:searchSuggestSelection=" ?"
  11. >
  12. </searchable>
複製代碼
參數說明:
android:searchSuggestAuthorith
此屬性的值就是SearchSuggestAuthorith中的AUTHORITH了。
android:searchSuggestIntentAction
此屬性定義了當我們選中搜索提示的內容時發生的目的動作。
android:searchSuggestThreshold
此屬性定義了至少輸入幾個字符時纔會彈出提示
android:includeInGlobalSearch
是否將內容加入android的全局搜索。true,加入。
android:searchSuggestSelection
定義搜索時參數的佔位符
發佈了35 篇原創文章 · 獲贊 5 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章