Android搜索控件的基本使用方法

在Android中,搜索是一个非常核心的功能,我们可以通过它搜索到任意我们可以获得的信息。这些信息可以是存储在手机中的联系人、文件等信息,也可以是在网络上的资源。

Android为了给用户提供良好的搜索体验,特意提供了一个搜索框架来方便开发者在自己的App中集成搜索功能。那么接下来我就学习一下这个搜索框架。

在Android的搜索框架中为我们提供了两种搜索的UI控件,它们分别是:

  • Search Dialog

Search Dialog就是浮动在Activity上方的,由系统管理的搜索控件。它不参与Activity的生命周期。

  • Search Widget

Search Wiget这是一个类似于EditView的控件,你可以将它随意摆放在任意你需要的位置。

这里我们主要学习Search Dialog的使用方法,Search Widget的使用方法读者可以在http://developer.android.com/guide/topics/search/index.html中学习,有什么问题也可以跟我讨论。

要使用Search Dialog,我们需要准备一下三个东西:

  1. A searchable configuration  这是一个xml的配置文件searchable.xml,并将其放在res/xml下
  2. A searchable activity 这是一个Activity,作用是用来处理用户输入的搜索关键字
  3. A search interface 这是一个搜索控件提供的接口,对于Search Dialog它提供的接口是onSearchRequested

根据以上三点,我们开始编写一个简单的包含搜索功能的App

1.编写searchable configuration

searchable.xml文件内容如下,并将其放入工程的res/xml下面

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/app_label"
    android:hint="@string/search_hint" >
</searchable>

app_label一般指定App的名字,使用简单的搜索功能时app_label是不可见的,只有将你的搜索功能加入到quick search box的时候,才会在quick search box的可搜索列表中出现。

search_hint就是当我们没有任何输入是出现在Search Dialog上的字符串

2.创建一个Searchable Activity

假设我们创建的Activity的名称为SearchableActivity,那么在AndroidManifest中的配置如下:

<application ... >
    <activity android:name=".SearchableActivity" >
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <meta-data android:name="android.app.searchable"
                   android:resource="@xml/searchable"/>
    </activity>
    ...
</application>

其中android:name="android.app.searchable"告诉Android系统,SearchableActivity这个界面对android.intent.action.SEARCH敏感。

android:resource="@xml/searchable"则是来指定我们在第一步中的配置文件。

3.调用搜索接口并处理用户输入

上面我们只定义了一个处理搜索关键字的界面,接下来我们还要定义一个调用搜索接口的界面:

这里为了简单期间,我只是在App的第一个界面MainActiviy中添加一个按钮,然后通过按钮来调用Search Dialog的搜索接口。

MainActiviy.onCreate

    private Button button ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = (Button)findViewById(R.id.button) ;
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onSearchRequested() ; //Search Dialog的调用接口
            }
        });
    }

MainActiviy对应的AndroidManifest配置

       <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <meta-data android:name="android.app.default_searchable"
                android:value=".SearchableActivity" />
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

其中

<meta-data android:name="android.app.default_searchable" android:value=".SearchableActivity" />指定了MainActivity调用Search Dialog的权利,并且指定了搜索处理界面SearchableActivity。

 

这里当点击MainActivity上的button的时候,就会调用onSearchRequested(),来激活Search Dialog。接着当我在Search Dialog中输入一些关键字并按确定时,系统会替我们发送一个包含了搜索关键字的Intent来启动SearchableActivity这个界面。所以只要在SearchableActivity的onCreate方法中获取intent,接着获取搜索关键字,就能对其进行处理了。

SearchableActivity.onCreate

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Intent intent = getIntent() ;
        if(Intent.ACTION_SEARCH.equals(intent.getAction())){
            String query = intent.getStringExtra(SearchManager.QUERY) ; //获取用户输入的关键字
             Toast.makeText(this,"the query key is " + query,Toast.LENGTH_LONG).show(); //弹出用户输入的关键字,模拟搜索处理
        }

    }

完成以上三步后,一个简单的搜索Demo就做好了。效果图如下:

MainActivity进行搜索

SearchableActivity处理关键字

源码下载http://pan.baidu.com/s/1o6DTcs6

时间: 2024-10-19 15:57:56

Android搜索控件的基本使用方法的相关文章

【ANDROID 初学】控件--IMAGEVIEW的使用方法

Start Android 1.图片视图(ImageView)的基本概念 2.<InameView/>与ImageView 3.神奇的ScaleType属性 当图片大小与ImageView大小不匹配的时候,可以通过该属性来调整图片与ImageView控件的位置关系. android:scaleType:  android:scaleType是控制图片如何resized/moved来匹对ImageView的size. ImageView.ScaleType / android:scaleType

android在代码中四种设置控件背景颜色的方法(包括RGB)

转载请注明出处: http://blog.csdn.net/fth826595345/article/details/9208771  TextView tText=(TextView) findViewById(R.id.textv_name); //第1种: tText.setTextColor(android.graphics.Color.RED);//系统自带的颜色类 // 第2种: tText.setTextColor(0xffff00ff);//0xffff00ff是int类型的数据

【Android 初学】5、控件--ImageView的使用方法

Start Android 1.图片视图(ImageView)的基本概念 2.<InameView/>与ImageView 3.神奇的ScaleType属性 当图片大小与ImageView大小不匹配的时候,可以通过该属性来调整图片与ImageView控件的位置关系. android:scaleType:  android:scaleType是控制图片如何resized/moved来匹对ImageView的size. ImageView.ScaleType / android:scaleType

Android中通过WebView控件实现与JavaScript方法相互调用的地图应用

在Android中通过WebView控件,可以实现要加载的页面与Android方法相互调用,我们要实现WebView中的addJavascriptInterface方法,这样html才能调用android方法,在这里我个人觉得有点和DWR相似. 为了让大家容易理解,我写了一个简单的Demo,具体步骤如下: 第一步:新建一个Android工程,命名为WebViewDemo(这里我在assets里定义了一个html页面). 第二步:修改main.xml布局文件,增加了一个WebView控件还有But

Android AutoCompleteTextView控件实现类似百度搜索提示,限制输入数字长度

Android AutoCompleteTextView 控件实现类似被搜索提示,效果如下 1.首先贴出布局代码 activity_main.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="f

ArcGIS for Android地图控件的5大常见操作

原文地址: ArcGIS for Android地图控件的5大常见操作 - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/arcgis_mobile/article/details/7801467   GIS的开发中,什么时候都少不了地图操作.ArcGIS for Android中,地图组件就是MapView,MapView是基于Android中ViewGroup的一个类(参考),也是ArcGIS Runtime SDK for

Android 标签控件

版本:1.0 日期:2014.7.24 版权:© 2014 kince 转载注明出处 在有的应用中可能需要设置一些标签来方便用去去查询某些信息,比如手机助手或者购物软件之类都会有一些标签.对于软件开发初期来说,直接使用TextView.Button实现是最为简单的一种方式.但是这种方法也有其局限性,比如不能控制换行.耦合性低等缺点.所以除了解决这些问题之外,最好能够封装一个类库出来,方便以后使用. 首先新建一个Tag类, import java.io.Serializable; public c

[Android]界面控件

1. 引用系统自带样式 字体大小 对于能够显示文字的控件(如TextView EditText RadioButton Button CheckBox Chronometer等等),你有时需要控制字体的大小.Android平台定义了三种字体大小. "?android:attr/textAppearanceLarge" "?android:attr/textAppearanceMedium" "?android:attr/textAppearanceSmal

Android界面编程——Android基本控件

 Android界面编程 Android应用开发的一项重要内容就是界面开发.对于用户来说,不管APP包含的逻辑多么复杂,功能多么强大,如果没有提供友好的图形交互界面,将很难吸引最终用户. 作为一个程序员如何才能开发出友好的图形界面呢.实际上Android提供了非常丰富UI(User Interface)控件,开发者只要掌握了这些控件的特性,按照一定的规律,就可以像堆积木一样开发出友好的图形界面. 本章内容将介绍常用控件的具体用法. 2.1  Android UI的基础知识 Android中所有的