Android组件复习之基本组件06—autocompletetextview自动完成文本框

本文介绍了Android中的Autocompletetextview组件,它是一个从EditText派生的文本编辑框,提供自动完成功能。当用户输入一定字符后,会显示下拉菜单供用户选择。主要讨论了其功能、用法、XML属性以及重要方法,并通过代码示例展示了如何在项目中使用。同时提到了MultiAutoCompleteTextView,它是AutoCompleteTextView的扩展,支持对用户输入的文本进行有效提示。

Autocompletetextview自动完成文本框功能及用法


自动完成文本框(AutocompleteTextVeiw)是从EditText派生出来的,实际上它也是一个文本编辑框,但它比普通编辑框多了一个功能:当用户输入一定字符之后,自动完成文本框会显示一个下来菜单,提供用户从中选择,当用户选择了某个菜单项之后,AutoCompleteTextView按用户选择自动填写该文本。

使用AutocopleteTextView很简单,只要为他设置一个Adapter,该Adapter封装了AutocopleteTextView预设的提示文本

AutocompleteTextview除了可使用EditText提供的xml属性和方法之外,还支持下面的属性

android:completionHint :设置出现在下拉菜单中的提示标题
android:completionThreshold : 设置用户至少输入多少个字符才会显示提示
android:dropDownHorizontalOffset: 下拉菜单于文本框之间的水平偏移。默认与文本框左对齐
android:dropDownHeight: 下拉菜单的高度
android:dropDownWidth :下拉菜单的宽度
android:popupBackground :设置下拉菜单的背景
android:dropDownVerticalOffset: 垂直偏移量

  • 先看下效果图

这里写图片描述

  • 布局文件,布局文件中定义了两种不同的组件,看下面
    <!-- 定义一个自动完成文本框,指定输入一个字符后进行提示 -->
    <AutoCompleteTextView
        android:id="@+id/auto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:completionHint="请选择"
        android:dropDownHorizontalOffset="10dp"
        android:completionThreshold="1"/>
    <!-- 定义一个MultiAutoCompleteTextView组件 -->
    <MultiAutoCompleteTextView
        android:id="@+id/mauto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:completionThreshold="1"/>
  • 两者的区别

    1、其中AutoCompleteTextView组件一个继承自 EditView 的 可编辑的文本视图,能够实现动态匹配输入的内容。如google搜索引擎当输入文本时可以根据内容显示匹配的热门信,重要方法如下

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

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

    getAdapter ():获取适配器

    2、MultiAutoCompleteTextView继承自 AutoCompleteTextView 的 可编辑的文本视图,能够对用户键入的文本进行有效地扩充提示,而不需要用户输入整个内容。(用户输入一部分内容,剩下的部分系统就会给予提示)。用户必须提供一个 MultiAutoCompleteTextView.Tokenizer 用来区分不同的子串。重要方法如下

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

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

    • 现在再看看在代码中引用
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.MultiAutoCompleteTextView;
/*
* 自动完成文本
* */
public class AotcompleteTextViewActivity extends Activity
{
    AutoCompleteTextView actv;
    MultiAutoCompleteTextView mauto;
    // 定义字符串数组,作为提示的文本
    String[] data = new String[]{"zzz","zzzz","bbbb",
            "bb","aaaaaa","aaa","sssss","ssss",
            "aaaa","ccc","ccccc","ddd","ddddd",
    };
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.aotucompletetextview);
        // 创建一个ArrayAdapter,封装数组
        ArrayAdapter<String> aa = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line, data);
        actv = (AutoCompleteTextView)findViewById(R.id.auto);
        // 设置Adapter
        actv.setAdapter(aa);

        //多个自动完成文本
        mauto = (MultiAutoCompleteTextView)findViewById(R.id.mauto);
        // 设置Adapter
        mauto.setAdapter(aa);
        // 为MultiAutoCompleteTextView设置分隔符
        mauto.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
    }
}
  • dome中的位置,记得修改dome清单中的配置,其他类都可以删除,每个类都是一个控件,没有关系
    这里写图片描述

dome地址:http://download.youkuaiyun.com/download/bobo8945510/9631870
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值