玩转Android---UI篇---AutoCompleteTextView(自动提示)

来源:互联网 发布:smtp协议端口 编辑:程序博客网 时间:2024/05/13 22:28

原址:http://hualang.iteye.com/category/143855

AutoCompleteTextView的功能类似于百度或者Google在搜索栏输入信息的时候,弹出的与输入信息接近的提示信息。

 

当然这里要要用到一些适配器

 

在Android中提供了两智能输入框,它们是MultiAutoCompleteTextView、AutoCompleteTextView。它们的功能大致一样,它和AutoCompleteTextView的区别就是MultiAutoCompleteTextView可以在输入框中一直增加新的选取值。编写方式也有所不同,在进行setAdapter之后还需要调用setTokenizer() 。下面详细介绍一下。

一、AutoCompleteTextView

1.简介

一个可编辑的文本视图,当用户输入信息后弹出提示。提示列表显示在一个下拉菜单中,用户可以从中选择一项,以完成输入。提示列表是从一个数据适配器获取的数据。

2.重要方法

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

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

      getAdapter():获取适配器

3.创建须知

 (1)布局文件

<AutoCompleteTextView

android:id="@+id/edit"

      android:layout_width="match_parent"

android:layout_height="wrap_content" />

 (2)程序

    实例化适配器

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line, strs);

    设置适配器

      edit.setAdapter(adapter);

 

二、MultiAutoCompleteTextView

1.简介

继承自AutoCompleteTextView,延长AutoCompleteTextView的长度,你必须要提供一个MultiAutoCompleteTextView.Tokenizer来区分不同的子串

2.重要方法

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

      performValidation():代替验证整个文本,这个子类方法验证每个单独的文字标记

      setTokenizer(MultiAutoCompleteTextView.Tokenizer t);

用户正在输入时,tokenizer设置将用于确定文本相关范围内

3.使用须知

  (1)布局文件

 <MultiAutoCompleteTextView

android:id="@+id/edit1"

    android:layout_width="match_parent"

    android:layout_height="wrap_content" />   

  (2)程序

    实例化适配器

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line, strs);

    设置适配器

      edit.setAdapter(adapter);

    确定范围

    edit1.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer())

 

下面是个例子

 

AutoCommitTest.java

Java代码  收藏代码
  1. package org.hualang.auto;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.widget.ArrayAdapter;  
  6. import android.widget.AutoCompleteTextView;  
  7. import android.widget.MultiAutoCompleteTextView;  
  8.   
  9. public class AutoCommitTest extends Activity {  
  10.     /** Called when the activity is first created. */  
  11.     private static final String[] autoString=new String[]{"welcome","well",  
  12.         "weatch","weexeview","werap"};                                       
  13.     @Override  
  14.     public void onCreate(Bundle savedInstanceState) {  
  15.         super.onCreate(savedInstanceState);  
  16.         setContentView(R.layout.main);  
  17.         //关联关键字  
  18.         ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,  
  19.                 android.R.layout.simple_dropdown_item_1line,  
  20.                 autoString);  
  21.         AutoCompleteTextView autocomplete=(AutoCompleteTextView)findViewById(R.id.auto);  
  22.         autocomplete.setAdapter(adapter);  
  23.         MultiAutoCompleteTextView multi=(MultiAutoCompleteTextView) findViewById(R.id.multi);  
  24.         //将adapter添加到AutoCompleteTextView中  
  25.         multi.setAdapter(adapter);  
  26.         multi.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());  
  27.     }  
  28. }  

 main.xml

Java代码  收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     >  
  7. <TextView    
  8.     android:layout_width="fill_parent"   
  9.     android:layout_height="wrap_content"   
  10.     android:text="自动提示功能演示"  
  11.     />  
  12. <AutoCompleteTextView  
  13.     android:id="@+id/auto"  
  14.     android:layout_width="fill_parent"  
  15.     android:layout_height="wrap_content"  
  16. />  
  17. <MultiAutoCompleteTextView  
  18.     android:id="@+id/multi"  
  19.     android:layout_width="fill_parent"  
  20.     android:layout_height="wrap_content"  
  21. />  
  22. </LinearLayout>  

 运行结果如下:




 


0 0
原创粉丝点击