简单使用Android Search Dialog
开发中为用户提供搜索功能很常见。大家可能最担心的是怎么在应用中展示搜索框,其实如果利用Android提供的搜索机制,搜索框就会自动显示在屏幕的上方,而且带有应用的icon。这里实现了一个最简单的,效果如下:

点击“我要搜索”,出现如下界面:

说一下具体的实现方法。首先需要在res下创建文件夹xml,然后在res/xml下创建searchable.xml :
<?xml version="1.0" encoding="utf-8"?>?
<searchable xmlns:android="http://schemas.android.com/apk/res/android"?
??? android:label="@string/app_label" >?
</searchable>
这是searchable.xml 的最简化的配置,通常android:label的值和应用名称一样,更多属性配置这里不谈。
第二步,创建处理搜索的Activity,配置AndroidMainfast.xml:
<activity android:name=".MySearchActivity" android:label="@string/app_name">?
??? <intent-filter>?
??????? <action android:name="android.intent.action.MAIN" />?
??????? <category android:name="android.intent.category.LAUNCHER" />?
???????????<action android:name="android.intent.action.SEARCH" />?
??? </intent-filter>?
???<meta-data android:name="android.app.searchable"?
??????? android:resource="@xml/searchable" />?
</activity>
其中,红色部分是实现搜索所必须要的配置。android:name的值必须填写"android.app.searchable”,android:resource的值就是res的xml文件夹下的searchable.xml 文件名。
最后是搜索功能的调用机制,就是如何打开搜索框:
public void onCreate(Bundle savedInstanceState) {?
??? super.onCreate(savedInstanceState);?
??? setContentView(R.layout.main);?
??? Button button = (Button) findViewById(R.id.mybutton);?
??? button.setOnClickListener(new OnClickListener() {??????? @Override?
??????? public void onClick(View v) {?
??????????? // TODO Auto-generated method stub??????????? onSearchRequested();?
??????????? Intent intent = getIntent();????????????????
??????????? if (Intent.ACTION_SEARCH.equals(intent.getAction())) {?
??????????????? String query = intent.getStringExtra(SearchManager.QUERY);?
??????????????? //得到输入要搜索的内容,然后进行分析展示?
??????????????? Log.v("name>>>", "—–" + query);?
??????????? }??????? }?
??? });?
}
这里为按钮添加监听机制,在点击按钮时弹出搜索框。onSearchRequested();的作用是是引发弹出搜索框。SearchManager.QUERY得到用户输入的内容。其他代码很简单,不做过多解释。
这里还要说明一点,调用Android的搜索框,不会对当前的Activity生命周期有任何影响,它只是让Activity的焦点转到了搜索框中,其他没有任何变化。转自:http://bigcat.easymorse.com/?p=655
