Android AutoCompleteTextView使用教程:完整示例与最佳实践

在Android应用程序中,AutoCompleteTextView是一个可编辑的文本视图,它在用户输入时自动显示完成建议。在本教程中,我们将使用ArrayAdapter来定义建议列表,并在我们的应用程序中实现Android的AutoCompleteTextView。

Android AutoCompleteTextView 概述

AutoCompleteTextView是一个组件,用于在可编辑文本字段中输入时显示建议内容。建议列表以下拉菜单的形式展示,用户可以从中选择所需的项。建议列表是从一个适配器中获取的,并且只有在达到指定的字符数阈值后才会显示出来。要使用AutoCompleteThreshold字段,需要在xml布局中进行定义,如下所示:

<AutoCompleteTextView
   android:id="@+id/autoCompleteTextView"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_alignParentTop="true"
   android:layout_centerHorizontal="true"
   android:layout_marginTop="65dp"
   android:ems="10" >
</AutoCompleteTextView>

注意:android:ems或setEms(x)会根据x个”M”字母的数量设置TextView的宽度,而不考虑实际文本的长度和字体大小。下面是一些Autocomplete列表的重要方法。

  • getAdapter():此方法返回一个可过滤的列表适配器,用于自动完成
  • getCompletionHint():此方法返回底部匹配列表显示的可选提示文本
  • getDropDownAnchor():此方法返回自动完成下拉列表所附加到的视图的id
  • getListSelection():此方法返回下拉视图选择的位置(如果有的话)
  • isPopupShowing():此方法指示弹出菜单是否正在显示
  • setText(CharSequence text, boolean filter):此方法设置文本,但可以禁用过滤
  • showDropDown():此方法在屏幕上显示下拉菜单

setAdapter方法用于设置autoCompleteTextView的适配器。让我们转到其编码部分。

Android AutoCompleteTextView项目结构

这个项目在MainActivity的布局中包含一个简单的TextView和一个AutoCompleteTextView。ArrayAdapter中包含以下水果:苹果、香蕉、樱桃、枣、葡萄、猕猴桃、芒果、梨。

Android AutoCompleteTextView 示例代码

MainActivity的布局定义如下。activity_main.xml

<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="15dp"
        android:text="请从以下水果中选择一种(苹果 香蕉 樱桃 枣 葡萄 猕猴桃 芒果 梨)" />

    <AutoCompleteTextView
        android:id="@+id/autoCompleteTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView"
        android:layout_marginLeft="36dp"
        android:layout_marginTop="17dp"
        android:ems="10"
        android:text="">

        <requestFocus />
    </AutoCompleteTextView>

</RelativeLayout>

下面是MainActivity.java的定义。

package com.Olivia.autocomplete;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;

public class MainActivity extends Activity {
    String[] fruits = {"苹果", "香蕉", "樱桃", "枣", "葡萄", "猕猴桃", "芒果", "梨"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //创建包含水果名称列表的ArrayAdapter实例
        ArrayAdapter<String> adapter = new ArrayAdapter<String>
                (this, android.R.layout.select_dialog_item, fruits);
        //获取AutoCompleteTextView的实例
        AutoCompleteTextView actv = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView);
        actv.setThreshold(1); //将从第一个字符开始工作
        actv.setAdapter(adapter); //将适配器数据设置到AutoCompleteTextView中
        actv.setTextColor(Color.RED);

    }
}
Android AutoCompleteTextView 示例应用

下载 Android AutoCompleteTextView 项目

bannerAds