Android AutoCompleteTextView示例教程

时间:2020-02-23 14:28:46  来源:igfitidea点击:

AutocompleteTextView是可编辑的文本视图,当用户在android应用中键入内容时,它会自动显示完成建议。
在本教程中,我们将使用" 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" >

注意:android:ems或者setEms(x)设置TextView的宽度以适合x个" M"个字母的文本,而不考虑实际的文本扩展名和文本大小。

自动完成列表的一些重要方法如下:

  • 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="Name a fruit from (Apple Banana Cherry Date Grape Kiwi Mango Pear)" 

  <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.theitroad.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 = {"Apple", "Banana", "Cherry", "Date", "Grape", "Kiwi", "Mango", "Pear"};

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

      //Creating the instance of ArrayAdapter containing list of fruit names
      ArrayAdapter<String> adapter = new ArrayAdapter<String>
              (this, android.R.layout.select_dialog_item, fruits);
      //Getting the instance of AutoCompleteTextView
      AutoCompleteTextView actv = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView);
      actv.setThreshold(1);//will start working from first character
      actv.setAdapter(adapter);//setting the adapter data into the AutoCompleteTextView
      actv.setTextColor(Color.RED);

  }
}

在上面的代码中,我们将水果列表存储在具有从Android SDK导入的布局的ArrayAdapter中。

可编辑TextView中的文本颜色为红色。
阈值计数为1表示要显示自动完成下拉列表,我们需要至少键入一个字符。

注意:仅当"可编辑"字段为焦点时,"自动完成列表"才可见。