Android控件之AutoCompleteTextView、MultiAutoCompleteTextView探究

2023-11-08

Android中提供了两种智能输入框,它们是AutoCompleteTextView、MultiAutoCompleteTextView。它们的功能大致一样。显示效果像Google搜索一样,当你在搜索框里输入一些字符时(至少两个字符),会自动弹出一个下拉框提示类似的结果。下面详细介绍一下。

一、AutoCompleteTextView

1、简介

一个继承自EditView的可编辑的文本视图,能够实现动态匹配输入的内容。如google搜索引擎当输入文本时可以根据内容显示匹配的热门信息。

2、重要方法

clearListSelection():清除选中的列表项

dismissDropDown():如果存在关闭下拉菜单

getAdapter():获取适配器


二、MultiAutoCompleteTextView

1、简介

一个继承自AutoCompleteTextView的可编辑的文本视图,能够对用户键入的文本进行有效地扩充提示,而不需要用户输入整个内容。(用户输入一部分内容,剩下的部分系统就会给予提示)。

用户必须提供一个MultiAutoCompleteTextView.Tokenizer用来区分不同的子串。

2、重要方法

enoughToFilter():当文本长度超过阈值时过滤

performValidation():代替验证整个文本,这个子类方法验证每个单独的文字标记

setTokenizer(MultiAutoCompleteTextView.Tokenizer t):用户正在输入时,tokenizer设置将用于确定文本相关范围内

以下为案例

main.xml布局文件

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:orientation="vertical"
  4.     android:layout_width="fill_parent"
  5.     android:layout_height="fill_parent">
  6.     <AutoCompleteTextView android:id="@+id/autoCompleteTextView"
  7.         android:layout_width="fill_parent"
  8.         android:layout_height="wrap_content"/>
  9.     <MultiAutoCompleteTextView android:id="@+id/multiAutoCompleteTextView"
  10.         android:layout_width="fill_parent"
  11.         android:layout_height="wrap_content"/>
  12. </LinearLayout>
复制代码



TextViewActivity类

  1. package com.ljq.activity;

  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.widget.ArrayAdapter;
  5. import android.widget.AutoCompleteTextView;
  6. import android.widget.MultiAutoCompleteTextView;

  7. public class TextViewActivity extends Activity {
  8.     //福建九地市
  9.     private static final String[] cities=new String[]
  10.         {"FuZhou", "XiaMen", "NiDe", "PuTian","QuanZhou", "ZhangZhou", "LongYan", "SanMing","NanPing"};
  11.     private AutoCompleteTextView autoCompleteTextView=null;
  12.     private MultiAutoCompleteTextView multiAutoCompleteTextView=null;
  13.    
  14.     @Override
  15.     public void onCreate(Bundle savedInstanceState) {
  16.         super.onCreate(savedInstanceState);
  17.         setContentView(R.layout.main);
  18.         
  19.         autoCompleteTextView=(AutoCompleteTextView)findViewById(R.id.autoCompleteTextView);
  20.         multiAutoCompleteTextView=(MultiAutoCompleteTextView)findViewById(R.id.multiAutoCompleteTextView);
  21.         
  22.         //创建适配器
  23.         ArrayAdapter<String> adapter=new ArrayAdapter<String>(
  24.                 this,
  25.                 android.R.layout.simple_dropdown_item_1line,
  26.                 cities);
  27.         autoCompleteTextView.setAdapter(adapter);
  28.         //设置输入多少字符后提示,默认值为2
  29.         autoCompleteTextView.setThreshold(2);
  30.         
  31.         multiAutoCompleteTextView.setAdapter(adapter);
  32.         multiAutoCompleteTextView.setThreshold(2);
  33.         //用户必须提供一个MultiAutoCompleteTextView.Tokenizer用来区分不同的子串。
  34.         multiAutoCompleteTextView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
  35.     }
  36. }
复制代码



运行结果

1.png

2011-5-14 08:50:09 上传
下载附件 (54.89 KB)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android控件之AutoCompleteTextView、MultiAutoCompleteTextView探究 的相关文章

  • 图像识别后如何在vuforia sdk ImageTarget中显示布局而不是茶壶模型

    如果图像在 qualcomm vuforia sdk 中被识别 我们如何在布局中显示简单的文本 即 Hello 我正在使用 ImageTarget 的 qualcomm vuforia sdk 示例 现在它在识别图像后显示一个茶壶 我是增强
  • 在 Android 中通过蓝牙接收音频

    我想创建一个能够接收音频流的 Android 应用程序 我想过使用 A2DP 配置文件 但似乎 Android 不支持 A2DP 接收器 看起来有很多人正在寻找这个问题的解决方案 但是接收普通的比特流 然后在应用程序中将数据转换为音频呢 我
  • Android 从图库中选择图像显示内存错误

    我正在编写一个代码示例 我必须从图库中选择一个图像 该代码正在运行 但是在从图库中选择图像后 我得到了内存不足错误 in my 活动结果时 我可以获得小图像 但大图像会产生问题 这是我的代码 try Uri selectedImageUri
  • Android 堆栈大小

    我如何获取和更改 Android 应用程序的堆栈大小 即使是主线程 主线程堆栈大小是在固件中设置的 无法修改 除非修改您自己手机的固件 正如斯特朗先生指出的那样 对于您分叉的线程 您可以设置自己的堆栈大小
  • 411 需要内容长度

    我正在尝试使用 Android Apache HttpClient 执行 POST 但它返回错误 411 Content Length required 这是代码 HttpClient httpClient new DefaultHttpC
  • 相机预览的有效模糊

    到目前为止我尝试过的 将每一帧转换为位图 然后用library https github com wasabeef Blurry并将其放入ImageView这是在相机预览前 显然太慢了 就像1 fps 然后我开始使用渲染脚本这会模糊每一帧
  • 我无法从 Android 模拟器中删除日语 IME

    我已经多次看到这个问题 但答案总是 从 语言和键盘设置 菜单中取消选中 IME 问题是那里没有复选框 选择菜单 自定义区域设置 en US 菜单 设置 语言和键盘 选择语言 选择 英语 美国 菜单 设置 语言和键盘 日语输入法是唯一的输入法
  • Android studio 模拟器中运行的WebView无法访问互联网,但Chrome可以?

    我安装了 Android studio 1 0 1 并按照此页面操作https developer chrome com multidevice webview gettingstarted https developer chrome c
  • 删除所有(子)片段的正确方法

    我在父级片段线性布局 fragmentContainer 中动态加载一堆子级片段 然后当用户单击按钮时 我需要将它们全部删除并添加新的 我不知道每次会添加多少碎片 这是我一次性删除所有碎片的方法 LinearLayout ll Linear
  • 使用动画来滑动视图

    我有一个可以识别滑动手势 向上和向下 的 FrameLayout 例如 如果执行向上滑动 我应该对当前视图 即 MATCH PARENT x MATCH PARENT 进行动画处理 使其向上移动 同时新视图来自底部 我可以用动画来实现这一点
  • 在 Android Studio 中使用预构建的共享库

    我需要在我的 android 项目中使用自定义的预构建共享库 在独立 ndk 上构建为 libdynamic so 我在路径 src main 中创建了一个文件夹 jniLibs 然后在其中创建了 4 个文件夹 即 armeabi arme
  • Room - LiveData 观察器在数据库更新时不会触发

    我试图在下面的代码中找出 为什么在我用新数据填充数据库后 Room 的 LiveData observable 不会给我新的转变 这是放在我的活动的 onCreate 方法中 shiftsViewModel ViewModelProvide
  • 如何使用 PHP 以任意顺序进行字符搜索(12 个字母,其中 6 个字母构成一个单词)?

    我整天都在想这个问题 似乎无法找出一种记忆有效且快速的方法 问题是 例如 我有这些信 e f j l n rr t t u w x 12 个字母 我正在找这个词 海龟 6 个字母 如何使用 php 找到完整范围 12 个单词 中所有可能的单
  • Buildozer Numpy RuntimeError:工具链损坏:无法链接简单的 C 程序

    用 Python 编写我的第一个 Android 应用程序并使用 Buildozer 对其进行打包 因为稍后在项目中需要使用numpy 所以我尝试打包以下测试代码 import numpy import kivy kivy require
  • 温度转换 2 字节

    我很难转换两个字节的温度 我有一个控制单元 温度传感器 我可以在其中获取两个字节的温度消息 1 示例 message 40 25 LSBYTE 40 MSBYTE 25 0 03125 C bit temperature 25C seen
  • Kotlin 中的枚举类对于 Android 来说是否像 Java 中那样“昂贵”?

    Are EnumKotlin 中的类对于 Android 来说 昂贵 就像 Java 一样 还可以用吗 IntDefs or StringDefs在科特林 当我将 Kotlin Enum 类反编译为 Java 类时 底层仍然使用了 Java
  • 如何在Android JUnit测试用例中调用Button.performClick?

    我是 Android 测试方面的新手 我想测试单击按钮是否会打开相应的活动 我做了一些研究 发现我需要使用 ActivityManager 来进行检查 问题是 我无法让 点击 部分正常工作 我正在尝试使用Button performClic
  • 如何释放字符串未使用的容量

    我正在程序中处理很多字符串 这些字符串数据在读入我的程序后的整个生命周期内都不会改变 但由于 C 字符串保留了容量 因此浪费了大量肯定不会被使用的空间 我尝试释放这些空间 但没有成功 以下是我尝试过的简单代码 string temp 123
  • Android,Volley请求,响应阻塞主线程

    使用 Volley 处理较大响应时会发生一些不好的事情 String url AppHelper DOMAIN service pages profile update json this infoTextView setText getS
  • 如何在不显示父活动的情况下将一个全屏对话框片段替换为另一个全屏对话框片段?

    我有一个使用单个自定义 DialogFragment 类的活动 它的外观是数据驱动的 因此不同的调用看起来可能相当不同 它是 全屏 即 setStyle DialogFragment STYLE NO FRAME android R sty

随机推荐

  • error C4146: 一元负运算符应用于无符号类型,结果仍为无符号类型

    用VS2015编译从GitHub上下载的一段代码 出现如下的错误提示 error C4146 一元负运算符应用于无符号类型 结果仍为无符号类型 warning C4244 从 double 转换到 float 可能丢失数据 error C4
  • Numpy中花式索引和shape用法

    原文转载自我的博客benym cn 总结一下最近学习中容易出现问题的地方 代码 from numpy import randMat random randint 0 10 4 3 print 原矩阵 n randMat 索引从0开始计数 p
  • jenkins+python自动化测试持续集成

    一 首先我们安装Jenkins 我这里采用的是 msi应用程序 根据提示进行安装 傻瓜式 最后会打开默认的网页地址 http localhost 8080 如果端口有冲突 可以去Jenkins的安装目录下的这个文件去改端口 二 进入Jenk
  • C/C++编程笔记:详解三种指针(悬空指针、空指针和野指针)

    悬空指针 指向已删除 或释放 的内存位置的指针称为悬空指针 指针用作悬空指针有三种不同的方式 内存分配 函数调用 如果x是静态变量 则不会出现问题 或p不会悬空 输出 5 变量超出范围 无效指针 无效指针是一种特定的指针类型 void 指向
  • Mycat实现读写分离,主备热切换

    实验环境 ubutu server 14 Master IP 172 16 34 212 Slave IP 172 16 34 34 156 Mycat server IP 172 16 34 219 不涉及过多理论 只有实现的过程 mys
  • COM三大接口:IUnknown、IClassFactory、IDispatch

    转载自 http blog sina com cn s blog 86d10dc701014m2v html 1 COM组件有三个最基本的接口类 分别是IUnknown IClassFactory IDispatch 1 1 COM规范规定
  • vuejs+element UI 点击编辑表格某一行时获取内容填入表单

    如果是已经有点经验的同学 可以直接看下面这个函数 应该就能明白怎么回事 新手可以看下面的详细教程 函数 handleEdit function index row this editFormVisible true this editFor
  • 【大一立项】如何亲手搭建ROS小车:硬件和软件介绍

    本次博客将详细介绍上篇博客中提到的ROS小车的硬件和软件部分 由于十一实验室不开门 所以部分代码还没有上传到Github 下位机 下位机使用Arduino 因为大一上刚学完用Arduino做循迹小车 其实Arduino作为ROS小车的下位机
  • Unity旋转角度范围限制

    因为Unity中在做旋转的时候是用四元数或者矩阵 有时候跟Transform组件面板显示的数值不一致 另外我们所有旋转角度常规数值其实是在 360 360度区间 所以我们判断一下 另外对于旋转角度范围予以限制 public float Cl
  • Linux进程间通信(IPC)的几种方式

    概述 进程间通信 IPC Inter Process Communication 指至少两个进程或线程间传送数据或信号的一些技术或方法 进程是计算机系统分配资源的最小单位 进程是分配资源最小的单位 而线程是调度的最小单位 线程共用进程资源
  • 淘宝下单时结算显示美金,解决办法

    在亲 若您在淘宝下单时结算显示美金 说明您的所在地区和支付方式设置结算方式为国际货币 你可以通过完成以下3个步骤修改为人民币支付 1 我的淘宝 右上方 设置 通用 国家 地区 选择非中国大陆的其他区域 确保步骤2中的 国际支付设置 可显示出
  • (干货)记前端工程师面试题,一起带大家理一理

    此文是上篇 如何拿到大厂offer面试题 技术征文 下 更新下剩下题目及答题思路 1 请简单描述http协议的请求报文和响应报文的组成格式 HTTP请求报文 一个HTTP请求报文由请求行 request line 请求头部 header 空
  • GET获取表单数据的方法

    两种最常被用到的方法是 GET 和 POST 关于GET请求 GET 请求可被缓存 GET 请求保留在浏览器历史记录中 GET 请求可被收藏为书签 GET 请求不应在处理敏感数据时使用 GET 请求有长度限制 GET 请求只应当用于取回数据
  • Java 7:Java集合从不懂到更不懂,不信来看

    集合 1 集合关系网 关系网 数组 Arrays asList就成了List 接口Collection 3个分支 List Set Queue List两个分支 Sequential 代表作是LinkedList 和RandomAccess
  • 第十五课 状语从句

    文章目录 前言 一 时间状语从句 时间状语从句 主语 谓语 宾语 或者 主语 谓语 宾语 时间状语从句 时间状语从句 主语 系动词 表语 或者 主语 系动词 表语 时间状语从句 1 when while as 引导的时间状语从句 when
  • 中标麒麟系统安装达梦数据库

    前言 近期 参加达梦公司组织的DCA认证培训 在中标麒麟下安装DM8数据库 以下是安装笔记 一 安装DM数据库 1 服务器信息查看 root localhost uname r 3 10 0 957 el7 x86 64 root loca
  • WordBias

    目录 WordBias 安装 界面 案例1 极端主义 案例2 pretty beautifull 论文 词嵌入做为一种词向量模型 可以从文本中计算出隐含的上下文情景信息 态度及偏见 通过词向量距离的测算 就可以间接测得不同群体对某概念 组织
  • 软件工程毕业设计选题c语言,经典软件工程专业论文选题 软件工程专业论文题目选什么比较好...

    100道 关于经典软件工程专业论文选题汇总 作为大学生的毕业生应该明白了软件工程专业论文题目选什么比较好 选一个好的题目后续的软件工程专业论文写作起来会更轻松 一 比较好写的软件工程专业论文题目 1 面向软件工程专业的 算法设计与分析 课程
  • python的exec函数

    exec 是 Python 内置的一个函数 用于在运行时执行动态生成的 Python 代码 它以字符串形式接收一个代码块 并将其编译并执行为可执行的 Python 代码 exec 函数的语法如下 exec object globals No
  • Android控件之AutoCompleteTextView、MultiAutoCompleteTextView探究

    在Android中提供了两种智能输入框 它们是AutoCompleteTextView MultiAutoCompleteTextView 它们的功能大致一样 显示效果像Google搜索一样 当你在搜索框里输入一些字符时 至少两个字符 会自