Android 高级UI组件之自动完成文本框(AutoCompleteTextView)

本文介绍Android中的AutoCompleteTextView组件,该组件继承自EditText并具备自动完成功能。文章详细讲解了如何配置XML布局文件来实现自动完成效果,并展示了如何在Java代码中绑定适配器以填充建议列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自动完成文本框(AutoCompleteTextView)从EditText继承过来。因此它实质也是一个文本编辑框。但是比起普通的文本编辑框,AutoCompleteTextView多了一个功能:当用户在文本编辑框中输入一定文本之后,Auto

CompleteTextView会显示出一个包含用户输入内容的下拉菜单,供用户选择,当用户选择其中的某个菜单项后 ,AutoCompleteTextView会将用户选择的菜单项自动填写到该文本框,功能类似于百度或者Google在搜索栏输入信息的时候,弹出的与输入信息接近的提示信息。

AutoCompleteTextView除了可以使用从父类EditText继承过来的XML属性和JAVA方法之外,还支持如下的XML属性和方法

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

在下面的XML界面布局文件中包含了一个AutoCompleteTextView组件,界面布局采用了线性布局。XML布局文件的代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	>
<!-- 定义一个自动完成文本框	,android:completionThreshold="1":指定输入一个字符后进行提示 -->
<!-- android:dropDownVerticalOffset="30dip" -->
<AutoCompleteTextView  
	android:id="@+id/auto"
	android:layout_width="fill_parent" 
	android:layout_height="wrap_content" 
	android:completionHint="请选择您喜欢的游戏:"
	android:dropDownHorizontalOffset="130dp"
	android:completionThreshold="1"
	/>
</LinearLayout>


接着 我们应该设置下拉菜单的文本资源,我们用XML文件将下拉菜单的提示文本的所有内容放到values目录下的strings.xml资源文件中,string.xml的代码如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="hello">Hello World, AutoCompleteTextViewTestActivity!</string>
    <string name="app_name">AutoCompleteTextViewTest</string>
    <string-array name="games_array">
        <item>魔兽世界</item>
        <item>魔兽争霸</item>
        <item>美女连连看</item>
        <item>埃及祖玛</item>
        <item>龙之谷</item>
        <item>上古战争</item>
        <item>超级俄罗斯方块</item>
        <item>超级马里奥</item>
    </string-array>
</resources>


接下来,我们应该在JAVA程序代码中将AutoCompleteTextView组件与strings.xml中下拉菜单提示文本资源通过用Adapter进行绑定。AutoCompleteTextViewTestActivity.java具体代码如下:

package com.xueyouxi.autocomplettextview;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;

public class AutoCompleteTextViewTestActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        final AutoCompleteTextView auto = (AutoCompleteTextView)findViewById(R.id.auto);
        //为auto提供Adapter
        String[] games = this.getResources().getStringArray(R.array.games_array);
        ArrayAdapter<String> ada = new ArrayAdapter<String>(this, R.layout.list_item , games);
        auto.setAdapter(ada);
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值