简单使用Android Search Dialog

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

image

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

image

说一下具体的实现方法。首先需要在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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值