Android AutoCompleteTextView示例教程
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表示要显示自动完成下拉列表,我们需要至少键入一个字符。
注意:仅当"可编辑"字段为焦点时,"自动完成列表"才可见。