Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android應用開發入門(十八)UI控件AutoCompleteTextView的使用

Android應用開發入門(十八)UI控件AutoCompleteTextView的使用

編輯:Android開發實例

前言

  之前講過EditText,有興趣的朋友可以看一下。這篇主要說明的是自動完成文本框,它實際上也是一個文本編輯框,可以理解為對EditText功能的擴展,它對輸入的內容可以進行提示並且自動完成。本文會講解常用屬性設置,以及如何向AutoCompleteTextView增加提示數據,最後將使用一個demo演示一下。  

 

說明

  自動完成文本框(AutoCompleteTextView),可以從官方文檔上看出,是從EditText繼承而來,所以它實際上也是一個文本編輯框,只是多了一個自動提示輸入補全的功能。功能類似於:當用戶輸入一定字符之後,自動完成文本框會顯示一個下拉列表,供用戶從中選擇,當用戶選擇某個菜單項之後,AutoCompleteTextView會按照的選擇自動填寫該文本框。

 

常用屬性

  因為是繼承自EditText,所以AutoCompleteTextView除了可以使提供用Edit的屬性和方法之外,還支持如下一些特殊的屬性及方法,這裡只介紹一些常用的,具體請參見官方文檔:

  • android:completionHint/setCompletionHint(CharSequence):設置出現下拉列表的提示標題。
  • android:completionTjreshold/setThreshold(int):設置至少輸入幾個字符才會顯示提示。
  • android:dropDownHeight/setDropHeight(int):設置下拉列表的高度。
  • android:dropDownWidth/setDropWidth(int):設置下拉列表的寬度。
  • android:popupBackground/setDropDownbackgroundResource(int):設置下拉列表的背景。

 

填充選擇數據

  在Android程序中,為了展示數據,通常會用到一個Adapter的接口。沒錯,這是一個接口,是連接後端數據和前端顯示的橋梁,是data souce和UI(View)之間一個重要的紐帶。下圖展示了Adapter在Android程序中的關系:

  對於Adapter,它是一個接口,Android為其聲明了各種實現類,對於在AutoCompleteTextView控件中,一般使用ArrayAdapter<T>即可完成功能,對於一些其他實現類的應用場景,以後會慢慢介紹。

  ArrayAdapter<T>繼承自一個抽象類BaseAdapter,而這個抽象類實現了Adapter接口,所以繼承關系應該是:Adapter→BaseAdater→ArrayAdapter<T>。

  從名字上可以看出,ArrayAdapter<T>是以一個數組的形式去存儲數據的,它也確實是這麼做的,並且可以傳遞一個數組對其進行構造。所以我們只需要填充一個數組對象,就完成ArrayAdapter對象的初始化工作,在把得到的ArrayAdapter對象傳遞給AutoCompleteTextView控件,即可對其進行選擇數據設置。

MultiAutoCompleteTextView  

  既然講到了AutoCompleteTextView,那就順帶講一下MultiAutoCompleteTextView,它繼承自AutoCompleteTextView。新擴展的功能是:可以進行多次提示,並且每次指定完成的內容通過符號進行分隔顯示。使用MultiAutoCompleteTextView必須實現一個MultiAutoCompleteTextView.Tokenizer接口,用於聲明用於選項與選項之間分隔的符號,一般如不特殊指定,可以使用Android為我們提供的實現類MultiAutoCompleteTextView.CommaTokenizer,它設定使用英文逗號","進行分隔選項。

demo

  下面新建一個Android項目來演示一下上面講到的內容,提供兩個輸入框,AutoCompleteTextView和MultiAutoCompleteTextView,然後對其進行“著名城市”的數據填充,並且進行演示,詳細的在代碼中已經注釋,這裡不再進行單獨講解。

  布局文件代碼: 

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  2.     xmlns:tools="http://schemas.android.com/tools" 
  3.     android:layout_width="match_parent" 
  4.     android:layout_height="match_parent" 
  5.     android:orientation="vertical" 
  6.     android:paddingBottom="@dimen/activity_vertical_margin" 
  7.     android:paddingLeft="@dimen/activity_horizontal_margin" 
  8.     android:paddingRight="@dimen/activity_horizontal_margin" 
  9.     android:paddingTop="@dimen/activity_vertical_margin" 
  10.     tools:context=".MainActivity" > 
  11.     <TextView 
  12.         android:layout_width="wrap_content" 
  13.         android:layout_height="wrap_content" 
  14.         android:text="@string/autoText" /> 
  15.     <!-- 聲明一個AutoCompleteTextView控件,設定其下拉框標題為“Famous Citi” 並且輸入一個字符開始提示--> 
  16.     <AutoCompleteTextView 
  17.         android:id="@+id/autotext" 
  18.         android:completionHint="Famous Citi" 
  19.         android:completionThreshold="1" 
  20.         android:layout_width="match_parent" 
  21.         android:layout_height="wrap_content" /> 
  22.  
  23.     <TextView 
  24.         android:layout_width="wrap_content" 
  25.         android:layout_height="wrap_content" 
  26.         android:text="@string/multiautoText" 
  27.     /> 
  28.     <MultiAutoCompleteTextView   
  29.         android:id="@+id/multiautotext" 
  30.         android:layout_width="match_parent" 
  31.         android:layout_height="wrap_content"/> 
  32. </LinearLayout> 

  實現Java代碼:

  1. package com.bgxt.autocomplettextviewdemo;  
  2.  
  3. import android.os.Bundle;  
  4. import android.app.Activity;  
  5. import android.view.Menu;  
  6. import android.widget.ArrayAdapter;  
  7. import android.widget.AutoCompleteTextView;  
  8. import android.widget.MultiAutoCompleteTextView;  
  9.  
  10. public class MainActivity extends Activity {  
  11.     private AutoCompleteTextView autotext;  
  12.     private MultiAutoCompleteTextView multiautotext;  
  13.     @Override 
  14.     protected void onCreate(Bundle savedInstanceState) {  
  15.         super.onCreate(savedInstanceState);  
  16.         setContentView(R.layout.activity_main);  
  17.           
  18.         //獲取布局文件中的兩個控件對象  
  19.         autotext=(AutoCompleteTextView)findViewById(R.id.autotext);  
  20.         multiautotext=(MultiAutoCompleteTextView)findViewById(R.id.multiautotext);          
  21.           
  22.         //設置數據源  
  23.         String[] autoStrings=new String[]{"New York","Tokyo","beijing","london","Seoul Special","Los Angeles"};  
  24.         //設置ArrayAdapter,並且設定以單行下拉列表風格展示(第二個參數設定)。  
  25.         ArrayAdapter<String> adapter=new ArrayAdapter<String>(MainActivity.this,   
  26. android.R.layout.simple_dropdown_item_1line, autoStrings);  
  27.         //設置AutoCompleteTextView的Adapter  
  28.         autotext.setAdapter(adapter);  
  29.           
  30.         //設置MultiAutoCompleteTextView的Adapter  
  31.         multiautotext.setAdapter(adapter);  
  32.         //設定選項間隔使用逗號分隔。  
  33.         multiautotext.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());  
  34.     }  

  實現效果:

   實例代碼下載

總結

  以上就講解了一下AutoCompleteTextView和MultiAutoCompleteTextView的簡單使用,雖然只是一個輔助的功能,但是可以增加更好的用戶體驗,用戶友好對於移動開發是必不可少的。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved