1.manifest中声明处理搜索的Activity(仅此声明后就可以调用)

<meta-data android:name="android.app.default_searchable" android:value=".OnSearchAppsList" />

2.Activity定义

<activity android:name=".OnSearchAppsList"android:configChanges="orientation|keyboardHidden|navigation"android:label="@string/Market"><intent-filter><action android:name="android.intent.action.SEARCH" /><category android:name="android.intent.category.DEFAULT" /></intent-filter><meta-data android:name="android.app.searchable" android:resource="@xml/searchable" /></activity>

3.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" />

4.调用 Search功能

  onSearchRequested();
5.截获 参数
  getIntent().getStringExtra(SearchManager.QUERY);

这后即可以随意处理搜索请求了。

具体使用时可以结合Activity的showDialog方法:

private static final int DIALOG_SEARCH_TEXT = 1;
@Overridepublic boolean onSearchRequested() {       showDialog(DIALOG_SEARCH_TEXT);       return false;}
 @Override    protected Dialog onCreateDialog(int id) {        switch (id) {            case DIALOG_SEARCH_TEXT:                LayoutInflater factory = LayoutInflater.from(this);                final View searchView = factory.inflate(R.layout.dialog_search_article, null);                final EditText editText = (EditText)searchView.findViewById(R.id.search_query);                editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {                    @Override                    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {                        if (actionId == EditorInfo.IME_ACTION_SEARCH                                || actionId == EditorInfo.IME_NULL) {                            InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);                            inputMethodManager.hideSoftInputFromWindow(                                    editText.getApplicationWindowToken(),                                    InputMethodManager.HIDE_NOT_ALWAYS);                            dismissDialog(DIALOG_SEARCH_TEXT);                            doSearch(editText);                            return true;                        }                        return false;                    }                });                return new AlertDialog.Builder(this)                        .setTitle(R.string.search_article_title)                        .setView(searchView)                        .setPositiveButton(R.string.search_article_ok,                                new DialogInterface.OnClickListener() {                                    @Override                                    public void onClick(DialogInterface dialog, int whichButton) {                                        doSearch(editText);                                    }                                })                        .setNegativeButton(R.string.search_article_cancel,                                new DialogInterface.OnClickListener() {                                    @Override                                    public void onClick(DialogInterface dialog, int whichButton) {                                    }                                }).create();        }        return null;    }



更多相关文章

  1. Android预定义样式
  2. Android去掉顶部的阴影
  3. Android(安卓)横屏不重启 Activity
  4. Android(安卓)限定 Activity 转向
  5. Android预定义样式
  6. Android实现TextView动画缩放
  7. SystemUI源码分析
  8. android logger 简要分析 (kernel 3.0.0)
  9. Android基本组件

随机推荐

  1. android 原生附加业务UI代码和灰显逻辑。
  2. android退出应用
  3. Material Design动画
  4. android 修改launcher行数和列数的方法
  5. Android(安卓)7.0你需要注意的一些坑。
  6. Windows搭建Eclipse+JDK+SDK的Android(安
  7. android cursor和cursoradapter的监听机
  8. Android(安卓)中使用onSaveInstanceState
  9. libevent 在 Android(安卓)上的一个改进
  10. Android(安卓)HAL架构