android学习笔记26--------------AutoCompleteTextView 与 MultiAutoCompleteTextView

1、简介

      在我们平常上网的时候经常会用到谷歌或百度,在输入框中输入我们想要输入的信息就会出现其他与其相关的提示信息,非常方便。这种效果在Android中是用AutoCompleteTextView实现的AutoCompleteTextView是一个可以编辑的文本view,当用户键入时,会自动显示完成建议信息。

建议列表显示在下拉列表框中,可以选中某项代替编辑框里的内容。

当用户点击回车键时,或者什么也没有选中点击ENTER建时下拉列表会自动消失。

建议列表是从一个数据适配器获取的数据。

 

 

  1. import android.app.Activity;  
  2. import android.os.Bundle;  
  3. import android.view.View;  
  4. import android.widget.AdapterView;  
  5. import android.widget.ArrayAdapter;  
  6. import android.widget.AutoCompleteTextView;  
  7. import android.widget.AdapterView.OnItemClickListener;  
  8.   
  9. public class AutoActivity extends Activity  
  10. {  
  11.   
  12.     private AutoCompleteTextView autoCompleteTextView = null;  
  13.   
  14.     private final String[] Citys = new String[]  
  15.     {  
  16.   
  17.     "Belgium""France""Italy""Germany""Spain""Sppp""Itaggg"  
  18.   
  19.     };  
  20.   
  21.     @Override  
  22.     public void onCreate(Bundle savedInstanceState)  
  23.     {  
  24.         super.onCreate(savedInstanceState);  
  25.         setContentView(R.layout.main);  
  26.   
  27.         autoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.AutoCompleteTextView);  
  28.   
  29.         // 配置设配器  
  30.         ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(  
  31.                 AutoActivity.this,  
  32.                 android.R.layout.simple_dropdown_item_1line, Citys);  
  33.   
  34.         autoCompleteTextView.setAdapter(arrayAdapter);  
  35.           
  36.         autoCompleteTextView.setOnItemClickListener(new OnItemClickListener()  
  37.         {  
  38.   
  39.             @Override  
  40.             public void onItemClick(AdapterView<?> parent, View view,  
  41.                     int position, long id)  
  42.             {                 
  43.                  System.out.println(autoCompleteTextView.getText().toString());               
  44.             }             
  45.         });           
  46.     }     
  47. }  



  1.  <span style="white-space: pre; background-color: rgb(240, 240, 240); "><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"</span>      
  1.     android:orientation="vertical"  
  2.     android:layout_width="fill_parent"  
  3.     android:layout_height="fill_parent"  
  4.     >  
  5.       
  6. <AutoCompleteTextView    
  7.     android:id="@+id/AutoCompleteTextView"  
  8.     android:layout_width="fill_parent"   
  9.     android:layout_height="wrap_content"   
  10.     android:completionThreshold="1"  
  11.     />  
  12.       
  13. </LinearLayout>  


补充:

 

completionThreshold:它的值决定了你在AutoCompleteTextView至少输入几个字符,它才会具有自动提示的功能。另,默认最多提示20条。

 

dropDownAnchor:它的值是一个View的ID,指定后,AutoCompleteTextView会在这个View下弹出自动提示。

dropDownSelector:应该是设置自动提示的背景色之类的,没有尝试过,有待进一步考证。

dropDownWidth:设置自动提示列表的宽度。

 

 

 

  1. public class MultiAutoCompleteTextViewActivity extends Activity  
  2. {  
  3.     private MultiAutoCompleteTextView autoCom = null;;  
  4.     private Button btnClear = null;  
  5.     private String[] normalString = null;  
  6.   
  7.     @Override  
  8.     public void onCreate(Bundle savedInstanceState)  
  9.     {  
  10.         super.onCreate(savedInstanceState);  
  11.         setContentView(R.layout.main);  
  12.   
  13.         normalString = new String[]  
  14.         { "android""android sxp""sxp""sxp wx" };  
  15.         autoCom = (MultiAutoCompleteTextView) findViewById(R.id.multiAutoCompleteTextView);  
  16.         btnClear = (Button) findViewById(R.id.btn);  
  17.           
  18.         // simple_dropdown_item_1line  
  19.         // 简单的一些样式,貌似是自定义的  
  20.           
  21.         ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,  
  22.                 android.R.layout.simple_dropdown_item_1line, normalString);  
  23.         autoCom.setAdapter(adapter);  
  24.   
  25.         // setTokenizer(); // Sets the Tokenizer 标记生成器 that will be used to  
  26.         // determine the relevant range of the text where the user is typing. //  
  27.         // CommaTokenizer(): // 这个简易的组件可以用于一些列表中,这些列表包含被逗号以及一个或数个空格断开的项目。 //  
  28.         // 不太理解,这个方法不加的话没法自动完成文本;添加的话又觉得是废话,列表当然以逗号分隔了  
  29.           
  30.         autoCom.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());  
  31.         btnClear.setOnClickListener(new OnClickListener()  
  32.         {  
  33.             @Override  
  34.             public void onClick(View v)  
  35.             {  
  36.                 autoCom.setText("");  
  37.             }  
  38.         });  
  39.     }  
  40. }  

  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.   
  8. <TextView          
  9.     android:id="@+id/textView"          
  10.     android:layout_width="fill_parent"          
  11.     android:layout_height="wrap_content"          
  12.     android:layout_gravity="center_horizontal"          
  13.     android:text="请输入"          
  14.     android:textSize="20px" ></TextView>      
  15.       
  16. <MultiAutoCompleteTextView          
  17.     android:id="@+id/multiAutoCompleteTextView"          
  18.     android:layout_width="260px"          
  19.     android:layout_height="wrap_content"          
  20.     android:layout_gravity="center_horizontal"          
  21.     android:text="" />  
  22.       
  23. <Button          
  24.     android:id="@+id/btn"          
  25.     android:layout_width="wrap_content"          
  26.     android:layout_height="wrap_content"          
  27.     android:layout_gravity="center_horizontal"          
  28.     android:text="清除" >    </Button>  
  29.   
  30.   
  31.   
  32. </LinearLayout>  

AutoCompleteTextView 与 MultiAutoCompleteTextView的区别:

 

AutoCompleteTextView 只匹配一次

MultiAutoCompleteTextView可以匹配多次

posted @ 2014-03-11 17:36  huidaoli  阅读(146)  评论(0编辑  收藏  举报