开发中为用户提供搜索功能很常见。大家可能最担心的是怎么在应用中展示搜索框,其实如果利用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 stubonSearchRequested();
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