Android是google的产品,所以自然是少不了搜索。先看看Android一些应用中的搜索对话框。 ![](https://i-blog.csdnimg.cn/blog_migrate/cf7bef4582a1acd7656ac951b6be5ec6.png) 图1 Android中的全局搜索 ![](https://i-blog.csdnimg.cn/blog_migrate/01cbc57493d66e76a064743eb6b29f51.png) 图2 联系人搜索 ![](https://i-blog.csdnimg.cn/blog_migrate/0ee7ec917bd95e4f4096209f25d0206d.png) 图3 音乐搜索 以上都是通过按下实体键盘上的搜索按钮弹出的一个搜索对话框,当然搜索关键词提示是少不了的。如何实现呢?慢慢来!呵呵。 一、配置搜索描述文件 在res中的xml文件加创建sreachable.xml,内容如下:
- <searchable xmlns:android="http://schemas.android.com/apk/res/android"
- android:label="@string/search_label"
- android:hint="@string/search_hint"
- android:searchSettingsDescription="@string/settings_description">
- </searchable>
复制代码
二、创建SearchableMusicActivity.java 至少需要实现onCreate方法显示出来吧。 三、配置AndroidManifest.xml
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.halzhang.android.search" android:versionCode="1"
- android:versionName="1.0">
- <application android:icon="@drawable/icon" android:label="@string/app_name">
- <activity android:name=".SearchableMusicActivity"
- android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- <intent-filter>
- <!-- 配置action -->
- <action android:name="android.intent.action.SEARCH" />
- </intent-filter>
- <!-- 指定搜索的配置文件 -->
- <meta-data android:name="android.app.searchable"
- android:resource="@xml/searchable" />
- </activity>
- <meta-data android:name="android.app.default_searchable"
- android:value=".SearchableMusicActivity" />
复制代码
通过以上三步就能实现搜索对话框了。 ![](https://i-blog.csdnimg.cn/blog_migrate/fa925f5283f51f7e6ca1ad58863e459a.png) 接下来会讲到搜索关键字提示,先到这里。 -----------------EOF-------------------
1.创建搜索建议提供者
Android已经为我们创建了一个默认的,我们只需要继承 SearchRecentSuggestionProvider 就稍做修改就可以了。
见代码:
- import android.content.SearchRecentSuggestionsProvider;
-
- /**
- * 搜索提示
- *
- * @author Hanguo
- * http://t.sina.com.cn/halzhang
- * @version 2011-1-5上午11:51:39
- */
- public class SearchSuggestionsProvider extends SearchRecentSuggestionsProvider {
- //记住这个哦
- public final static String AUTHORITY = "searchprovider";
-
- public final static int MODE = DATABASE_MODE_QUERIES;
-
- public SearchSuggestionsProvider() {
- setupSuggestions(AUTHORITY, MODE);
- }
- }
复制代码
2.配置searchable.xml
- <?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:searchSettingsDescription="@string/search_settings_description"
- android:searchSuggestAuthority="searchprovider"
- android:searchSuggestIntentAction="android.intent.action.SEARCH"
- android:searchSuggestThreshold="1"
- android:includeInGlobalSearch="true"
- android:searchSuggestSelection=" ?"
- >
- </searchable>
复制代码
参数说明: android:searchSuggestAuthorith 此属性的值就是SearchSuggestAuthorith中的AUTHORITH了。 android:searchSuggestIntentAction 此属性定义了当我们选中搜索提示的内容时发生的目的动作。 android:searchSuggestThreshold 此属性定义了至少输入几个字符时才会弹出提示 android:includeInGlobalSearch 是否将内容加入android的全局搜索。true,加入。 android:searchSuggestSelection 定义搜索时参数的占位符 |