• Android Video Tutorials

Android - 自動完成



如果您希望在可編輯文字欄位中輸入時獲得建議,您可以透過 AutoCompleteTextView 來實現。它會在使用者鍵入時自動提供建議。建議列表顯示在下拉選單中,使用者可以從中選擇一項來替換編輯框中的內容。

為了使用 AutoCompleteTextView,您首先必須在 xml 中建立一個 AutoCompleteTextView 欄位。其語法如下所示。

<AutoCompleteTextView
   android:id="@+id/autoCompleteTextView1"
   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" >

之後,您必須在 Java 中獲取此文字檢視的引用。其語法如下所示。

private AutoCompleteTextView actv;
actv = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1); 

接下來,您需要指定要顯示的建議專案列表。您可以將列表專案指定為 Java 中的字串陣列或 strings.xml 中的字串陣列。其語法如下所示。

String[] countries = getResources().getStringArray(R.array.list_of_countries);
ArrayAdapter<String> adapter = new ArrayAdapter<String>
   (this,android.R.layout.simple_list_item_1,countries);
actv.setAdapter(adapter);

陣列介面卡類負責在文字欄位的建議框中將資料顯示為列表。`setAdapter` 方法用於設定 autoCompleteTextView 的介面卡。除了這些方法外,AutoComplete 的其他方法如下所示。

序號 方法及描述
1

getAdapter()

此方法返回用於自動完成的可過濾列表介面卡。

2

getCompletionHint()

此方法返回顯示在匹配列表底部的可選提示文字。

3

getDropDownAnchor()

此方法返回自動完成下拉列表所錨定的檢視的 ID。

4

getListSelection()

此方法返回下拉檢視選擇的 position(如果存在)。

5

isPopupShowing()

此方法指示彈出選單是否正在顯示。

6

setText(CharSequence text, boolean filter)

此方法設定文字,但可以停用過濾。

7

showDropDown()

此方法在螢幕上顯示下拉選單。

示例

以下示例演示了 AutoCompleteTextView 類的用法。它建立一個基本的應用程式,允許您鍵入並顯示裝置上的建議。

要試驗此示例,您需要在實際裝置或模擬器上執行它。

步驟 描述
1 您將使用 Android Studio 在包 com.example.sairamkrishna.myapplication 下建立一個 Android 應用程式。
2 修改 src/MainActivity.java 檔案以新增 AutoCompleteTextView 程式碼。
3 修改佈局 XML 檔案 res/layout/activity_main.xml,如有需要新增任何 GUI 元件。
4 執行應用程式,選擇正在執行的 Android 裝置,將應用程式安裝在其上並驗證結果。

以下是 **src/MainActivity.java** 的內容。

package com.example.sairamkrishna.myapplication;

import android.app.Activity;
import android.content.Context;

import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaRecorder;

import android.os.Bundle;
import android.os.Environment;

import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;

import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.MultiAutoCompleteTextView;
import android.widget.Toast;
import java.io.IOException;


public class MainActivity extends Activity {
   AutoCompleteTextView text;
   MultiAutoCompleteTextView text1;
   String[] languages={"Android ","java","IOS","SQL","JDBC","Web services"};
   
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      
      text=(AutoCompleteTextView)findViewById(R.id.autoCompleteTextView1);
      text1=(MultiAutoCompleteTextView)findViewById(R.id.multiAutoCompleteTextView1);
      
      ArrayAdapter adapter = new 
         ArrayAdapter(this,android.R.layout.simple_list_item_1,languages);
      
      text.setAdapter(adapter);
      text.setThreshold(1);
      
      text1.setAdapter(adapter);
      text1.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
   }
}

以下是 **activity_main.xml** 的內容。

此處 abc 表示 tutorialspoint 的 logo。
<xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
   xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://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:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Android Auto Complete"
      android:id="@+id/textView"
      android:textSize="30dp"
      android:layout_alignParentTop="true"
      android:layout_alignParentRight="true"
      android:layout_alignParentEnd="true" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorialspoint"
      android:id="@+id/textView2"
      android:textColor="#ff3eff0f"
      android:textSize="35dp"
      android:layout_below="@+id/textView"
      android:layout_centerHorizontal="true" />
      
   <ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageView"
      android:src="@drawable/logo"
      android:layout_below="@+id/textView2"
      android:layout_alignLeft="@+id/textView2"
      android:layout_alignStart="@+id/textView2"
      android:layout_alignRight="@+id/textView2"
      android:layout_alignEnd="@+id/textView2" />
      
   <AutoCompleteTextView
      android:id="@+id/autoCompleteTextView1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:ems="10"
      android:layout_below="@+id/imageView"
      android:layout_alignLeft="@+id/imageView"
      android:layout_alignStart="@+id/imageView"
      android:layout_marginTop="72dp"
      android:hint="AutoComplete TextView">
      <requestFocus />
   </AutoCompleteTextView>
   
   <MultiAutoCompleteTextView
      android:id="@+id/multiAutoCompleteTextView1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:ems="10"
      android:layout_below="@+id/autoCompleteTextView1"
      android:layout_alignLeft="@+id/autoCompleteTextView1"
      android:layout_alignStart="@+id/autoCompleteTextView1"
      android:hint="Multi Auto Complete " />
      
</RelativeLayout>

以下是 **Strings.xml** 的內容。

<resources>
   <string name="app_name">My Application</string>
</resources>

以下是 **AndroidManifest.xml** 的內容。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication" >

   <application
      android:allowBackup="true"
      android:icon="@drawable/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name="com.example.sairamkrishna.myapplication.MainActivity"
         android:label="@string/app_name" >
         
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
         
      </activity>
      
   </application>
</manifest>

讓我們嘗試執行您的應用程式。我假設您在進行環境設定時已連線您的 AVD。要從 Android Studio 執行應用程式,請開啟您的專案中的一個活動檔案,然後單擊工具欄中的執行 Eclipse Run Icon 圖示。Android Studio 將此應用程式安裝到您的 AVD 中,您的 AVD 將顯示以下螢幕。

Anroid Capture Tutorial

現在只需在文字檢視中鍵入即可檢視語言建議。當我鍵入一個字母“a”時,它就會顯示語言建議。

Anroid Capture Tutorial

multiAutoCompleteTextView 不僅演示了單詞的建議,還演示了整個文字的建議。在編寫第一個單詞後,當我開始編寫第二個單詞時,它會顯示建議。這可以在下圖中顯示。

Anroid Capture Tutorial
廣告
© . All rights reserved.