웹사이트 검색

Android AutoCompleteTextView 예제 자습서


AutocompleteTextView는 사용자가 Android 앱에 입력하는 동안 완성 제안을 자동으로 표시하는 편집 가능한 텍스트 보기입니다. 이 튜토리얼에서는 제안 목록을 정의하기 위해 ArrayAdapter를 사용하여 애플리케이션에서 Android AutoCompleteTextView를 구현합니다.

Android AutoCompleteTextView 개요

AutoCompleteTextView는 편집 가능한 텍스트 필드에 작성하는 동안 제안을 표시하는 데 사용되는 구성 요소입니다. 제안 목록은 사용자가 원하는 항목을 선택할 수 있는 드롭다운 메뉴에 표시됩니다. 제안 목록은 어댑터에서 가져오며 임계값에 지정된 문자 수 뒤에만 나타납니다. AutoCompleteThreshold 필드를 사용하려면 다음과 같이 xml 레이아웃에 정의해야 합니다.

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

참고: android:ems 또는 setEms(x)는 실제 텍스트 확장자와 텍스트 크기에 관계없이 x 'M' 글자 수의 텍스트에 맞도록 TextView의 너비를 설정합니다. 자동 완성 목록의 몇 가지 중요한 방법은 다음과 같습니다.

  1. getAdapter() : 이 메서드는 자동 완성에 사용되는 필터링 가능한 목록 어댑터를 반환합니다.
  2. getCompletionHint() : 이 메서드는 일치하는 목록의 하단에 표시되는 선택적 힌트 텍스트를 반환합니다.
  3. getDropDownAnchor() : 이 메서드는 자동 완성 드롭다운 목록이 첨부된 뷰의 ID를 반환합니다.
  4. getListSelection() : 이 메서드는 드롭다운 보기 선택 항목이 있는 경우 해당 위치를 반환합니다.
  5. isPopupShowing() : 이 메서드는 팝업 메뉴가 표시되는지 여부를 나타냅니다.
  6. setText(CharSequence text, boolean filter) : 이 메서드는 필터링을 비활성화할 수 있다는 점을 제외하고 텍스트를 설정합니다.
  7. showDropDown() : 이 메서드는 화면에 드롭다운을 표시합니다.

setAdapter 메소드는 autoCompleteTextView의 어댑터를 설정하는 데 사용됩니다. 그것의 코딩 부분으로 이동합시다.

Android AutoCompleteTextView 프로젝트 구조

Android AutoCompleteTextView 예제 코드

MainActivity의 레이아웃은 다음과 같이 정의됩니다. activity_main.xml

<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://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:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="15dp"
        android:text="Name a fruit from (Apple Banana Cherry Date Grape Kiwi Mango Pear)" />

    <AutoCompleteTextView
        android:id="@+id/autoCompleteTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView"
        android:layout_marginLeft="36dp"
        android:layout_marginTop="17dp"
        android:ems="10"
        android:text="">

        <requestFocus />
    </AutoCompleteTextView>

</RelativeLayout>

MainActivity.java는 아래에 정의되어 있습니다.

package com.journaldev.autocomplete;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;

public class MainActivity extends Activity {
    String[] fruits = {"Apple", "Banana", "Cherry", "Date", "Grape", "Kiwi", "Mango", "Pear"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //Creating the instance of ArrayAdapter containing list of fruit names
        ArrayAdapter<String> adapter = new ArrayAdapter<String>
                (this, android.R.layout.select_dialog_item, fruits);
        //Getting the instance of AutoCompleteTextView
        AutoCompleteTextView actv = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView);
        actv.setThreshold(1);//will start working from first character
        actv.setAdapter(adapter);//setting the adapter data into the AutoCompleteTextView
        actv.setTextColor(Color.RED);

    }
}

Android AutoCompleteTextView 프로젝트 다운로드