Android 搜索框架实现
上面是通过按下实体键盘上的搜索按钮弹出的一个搜索对话框,当然搜索关键词提示是少不了的。如何实现呢?慢慢来!呵呵。
一、配置搜索描述文件
在res中的xml文件加创建sreachable.xml,内容如下:
java代码:
<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
java代码:
<?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" />
Android已经为我们创建了一个默认的,我们只需要继承 SearchRecentSuggestionProvider 就稍做修改就可以了。
java代码:
import android.content.SearchRecentSuggestionsProvider;
/**
* 搜索提示
*
* @author Hanguo 7:
* @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
java代码:
<?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>