Android实现动态自动匹配输入内容功能

什么是动态自动匹配输入内容呢?举个例子,当我们在百度等搜索引擎的输入框中输入想要搜索的关键词,输入框下面会提示很多相关联的热门搜索项,效果图如下

那在安卓中如何实现这种效果呢?在这里给大家推荐两个Android的控件:

AutoCompleteTextView
MultiAutoCompleteTextView

一、AutoCompleteTextView

独特属性:android:completionThreshold=”2”—–设置输入多少字符时自动匹配

首先,我们先在res文件夹(我用的是AndroidStudio)下的active_main.xml下面加入AutoCompleteTextView控件,并设置好大小宽高等其他一些基础属性

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.admin.demo.MainActivity"> <AutoCompleteTextView android:completionThreshold="2" android:id="@+id/autoCompleteTextView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入你要搜索的关键词" /> </LinearLayout>

接着,我们到java目录下的MainActivity.java加入相应的代码:

package com.example.admin.demo; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; public class MainActivity extends AppCompatActivity { private AutoCompleteTextView acTextView; //建立一个数组,保存我们想要提示的文本内容 private String[] res = {"ab1","ab2","ab3"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化控件,返回类型view强制转换成AutoCompleteTextView acTextView = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1); //添加适配器,并初始化数据源,用来匹配文本框输入的内容 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,res); //将适配器与当前控件绑定 acTextView.setAdapter(adapter); } }

这样代码就完成了,因为我们在AutoCompleteTextView控件中设置了android:completionThreshold=”2”,即当我们输入到第2个字符时开始进行匹配,让我们将当前应用程序布置到模拟器里面看一下效果:

二、MultiAutoCompleteTextView

有时候我们在文本框中需要进行多次输入,比如我们在发短信或者写邮件的时候,往往需要多选联系人:

在这种时候,我们就可以选择MultiAutoCompleteTextView:

支持选择多个值(在多次输入的情况下),分别用分隔符分开,并且在每个值选中的时候再次输入值时会自动去匹配 独特属性:android:completionThreshold=”2”—–设置输入多少字符时自动匹配 设置分隔符:macTextView.setTokenizer(newMultiAutoCompleteTextView.CommaTokenizer());

这个控件的使用方法跟AutoCompleteTextView大体上还是差不多的,只是多了设置分隔符这一步

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.admin.demo.MainActivity"> <MultiAutoCompleteTextView android:completionThreshold="2" android:id="@+id/multiAutoCompleteTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入收件人" /> </LinearLayout>

MainActivity.java:

package com.example.admin.demo; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.MultiAutoCompleteTextView; public class MainActivity extends AppCompatActivity { private MultiAutoCompleteTextView macTextView; //建立一个数组,保存我们想要提示的文本内容 private String[] res = {"ab1","ab2","ab3","cd1","cd2","cd3"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化控件,返回类型view强制转换成AutoCompleteTextView macTextView = (MultiAutoCompleteTextView) findViewById(R.id.multiAutoCompleteTextView); //添加适配器,并初始化数据源,用来匹配文本框输入的内容 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,res); //将适配器与当前控件绑定 macTextView.setAdapter(adapter); //设置以逗号为分隔符为结束的符号 macTextView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer()); } }

运行结果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

时间: 2024-07-29 14:41:21

Android实现动态自动匹配输入内容功能的相关文章

Android 组件系列(1):自动完成输入内容的组件(AutoCompleteTextView )

本文为原创,如需转载,请注明作者和出处,谢谢!     AutoCompleteTextView和EditText组件类似,都可以输入文本.但AutoCompleteTextView组件可以和一个字符串数组或List对象绑定,当用户输入两个及以上字符时,系统将在AutoCompleteTextView组 件下方列出字符串数组中所有以输入字符开头的字符串,这一点和www.Google.com的搜索框非常相似,当输入某一个要查找的字符串时,Google搜索框就会列出以这个字符串开头 的最热门的搜索字

Android组件系列(1):自动完成输入内容的组件(AutoCompleteTextView )

本文为原创,如需转载,请注明作者和出处,谢谢!     AutoCompleteTextView 和 EditText 组件类似,都可以输入文本.但 AutoCompleteTextView 组件可以和一个字符串数组或 List 对象绑定,当用户输入两个及以上字符时,系统将在 AutoCompleteTextView 组 件下方列出字符串数组中所有以输入字符开头的字符串,这一点和 www.Google.com 的搜索框非常相似,当输入某一个要查找的字符串时, Google 搜索框就会列出以这个字

android 怎么动态改变部分组件内容(单击菜单栏,内容就改变,但菜单栏不动);

问题描述 类似这种  下面有三个菜单按钮, 单击一个按钮后, 空白部分就改变不同内容: 假设下面三个按钮  A   B   C , 单机A后,就显示第一个activity,单击B后就像是第二个activity ,单机C后就显示  第三个activity :  怎么实现?   难道要在每一个activity里都加入一样的菜单栏?    这比较麻烦, 有其他方法没? 解决方案 为什么不用tabhost页签组件?解决方案二:骚年,使用viewpager+fragment,tabhost已经废弃了,不推

Android编程实现输入框动态自动提示功能

本文实例讲述了Android编程实现输入框动态自动提示功能.分享给大家供大家参考,具体如下: 关于AutoCompleteTextView的使用,我想大家并不陌生,对其设定上Adapter后系统便能自己识别与匹配了.近期 一个项目中,需要做到匹配通迅录中的电话号码和联系人,由于通迅录中数据量大,所以把所有的数据在自己提示之前就查询出来并加入到 AutoCompleteTextView中是不现实的,所以我们可以使用cursor来动态加载AutoCompleteTextView的数据,从而 实现时时

Android实现自动匹配关键字并且标红功能

本文实例为大家分享了Android匹配关键字标红的具体代码,供大家参考,具体内容如下 1. 单关键字匹配 若只需匹配 搜索内容  可以写的简单一些,代码如下: if (name != null && name.contains(mKeyWord)) { int index = name.indexOf(mKeyWord); int len = mKeyWord.length(); Spanned temp = Html.fromHtml(name.substring(0, index) +

PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能

我们在很多项目中使用了搜索功能来帮助用户更快更准确的找到想要的信息.本文将介绍如何实现用户输入自动提示的功能,就像谷歌百度搜索引擎一样,当用户输入关键字时,输入框下方会有提示,将与关键字相关的信息展现出来供用户选择,提升了用户体验. 本文将使用jquery ui的autocomplete插件,结合后端PHP,数据源通过PHP读取mysql数据表的数据. XHTML 首先将jquery库和相关ui插件,以及css导入.   代码如下: <link rel="stylesheet"

JS实现仿百度输入框自动匹配功能的示例代码介绍

 本篇文章主要是对JS实现仿百度输入框自动匹配功能的示例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 现在很多网站都有这种效果,在文本框输入一个字符,下边会出来相匹配的内容,这个代码就演示了这个功能是如何完成的,当然,这是个静态的,你可以将提示的内容从数据库读取出来,要用到AJAX那东东.    代码如下: <HTML> <HEAD> <title>带输入匹配的文本框</title> <style> body,div { font

PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能_php实例

我们在很多项目中使用了搜索功能来帮助用户更快更准确的找到想要的信息.本文将介绍如何实现用户输入自动提示的功能,就像谷歌百度搜索引擎一样,当用户输入关键字时,输入框下方会有提示,将与关键字相关的信息展现出来供用户选择,提升了用户体验. 本文将使用jquery ui的autocomplete插件,结合后端PHP,数据源通过PHP读取mysql数据表的数据. XHTML 首先将jquery库和相关ui插件,以及css导入. 复制代码 代码如下: <link rel="stylesheet&quo

jQuery插件实现可输入和自动匹配的下拉框_jquery

实现可输入+带自动匹配功能的下拉框,我试过以下几种方法: 1.直接使用h5的新标签<datalist>,对应demo如下: <input list="browsers"> <datalist id="browsers"> <option value="Internet Explorer"> <option value="Firefox"> <option val