这里有新鲜出炉的精品教程,程序狗速度看过来!
Android 是一种基于 Linux 的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由 Google 公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用 "安卓" 或 "安致"。
这篇文章主要为大家详细介绍了 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:
这个控件的使用方法跟 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());
- }
- }
运行结果:
来源: http://www.phperz.com/article/17/0825/337558.html