Xamarin.Android에 대한 자동 완성

AutoCompleteTextView 는 사용자가 입력하는 동안 자동으로 완성 제안을 표시하는 편집 가능한 텍스트 뷰 요소입니다. 제안 목록은 사용자가 편집 상자의 내용을 바꿀 항목을 선택할 수 있는 드롭다운 메뉴에 표시됩니다.

Example of Auto Complete

개요

자동 완성 제안을 제공하는 텍스트 항목 위젯을 만들려면 다음을 사용합니다. AutoCompleteTextView 위젯. 제안을 통해 위젯과 연결된 문자열 컬렉션에서 받습니다 ArrayAdapter.

이 자습서에서는 다음을 만듭니다. AutoCompleteTextView 국가 이름에 대한 제안을 제공하는 위젯입니다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="5dp">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Country" />
    <AutoCompleteTextView android:id="@+id/autocomplete_country"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"/>
</LinearLayout>

TextView 다음을 소개하는 레이블입니다. AutoCompleteTextView 위젯.

자습서

HelloAutoComplete라는 새 프로젝트를 시작합니다.

이름이 지정된 list_item.xml XML 파일을 만들고 Resources/Layout 폴더 내에 저장합니다. 이 파일의 빌드 동작을 .로 AndroidResource설정합니다. 다음과 같이 파일을 편집합니다.

<?xml version="1.0" encoding="utf-8"?>

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    android:textSize="16sp"
    android:textColor="#000">
</TextView> 

이 파일은 제안 목록에 표시되는 각 항목에 사용할 간단한 TextView 항목을 정의합니다.

Resources/Layout/Main.axml을 열고 다음을 삽입합니다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="5dp">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Country" />
    <AutoCompleteTextView android:id="@+id/autocomplete_country"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"/>
</LinearLayout>

MainActivity.cs 열고 다음 코드를 삽입합니다.OnCreate() 메서드:

protected override void OnCreate (Bundle bundle)
{
    base.OnCreate (bundle);

    // Set our view from the "Main" layout resource
    SetContentView (Resource.Layout.Main);

    AutoCompleteTextView textView = FindViewById<AutoCompleteTextView> (Resource.Id.autocomplete_country);
    var adapter = new ArrayAdapter<String> (this, Resource.Layout.list_item, COUNTRIES);

    textView.Adapter = adapter;
}

콘텐츠 보기가 레이아웃으로 main.xml 설정된 후 AutoCompleteTextView 위젯은 레이아웃에서 .를 사용하여 FindViewById캡처됩니다. 그런 다음 문자열 배열의 각 목록 항목 COUNTRIES 에 레이아웃을 바인딩 list_item.xml 하도록 새 ArrayAdapter 항목이 초기화됩니다(다음 단계에서 정의됨). 마지막으로 다음 SetAdapter() 을 연결하기 위해 호출됩니다 ArrayAdapter . AutoCompleteTextView 문자열 배열이 제안 목록을 채우도록 위젯입니다.

클래스 내에서 MainActivity 문자열 배열을 추가합니다.

static string[] COUNTRIES = new string[] {
  "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra",
  "Angola", "Anguilla", "Antarctica", "Antigua and Barbuda", "Argentina",
  "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan",
  "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium",
  "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia",
  "Bosnia and Herzegovina", "Botswana", "Bouvet Island", "Brazil", "British Indian Ocean Territory",
  "British Virgin Islands", "Brunei", "Bulgaria", "Burkina Faso", "Burundi",
  "Cote d'Ivoire", "Cambodia", "Cameroon", "Canada", "Cape Verde",
  "Cayman Islands", "Central African Republic", "Chad", "Chile", "China",
  "Christmas Island", "Cocos (Keeling) Islands", "Colombia", "Comoros", "Congo",
  "Cook Islands", "Costa Rica", "Croatia", "Cuba", "Cyprus", "Czech Republic",
  "Democratic Republic of the Congo", "Denmark", "Djibouti", "Dominica", "Dominican Republic",
  "East Timor", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea",
  "Estonia", "Ethiopia", "Faeroe Islands", "Falkland Islands", "Fiji", "Finland",
  "Former Yugoslav Republic of Macedonia", "France", "French Guiana", "French Polynesia",
  "French Southern Territories", "Gabon", "Georgia", "Germany", "Ghana", "Gibraltar",
  "Greece", "Greenland", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guinea", "Guinea-Bissau",
  "Guyana", "Haiti", "Heard Island and McDonald Islands", "Honduras", "Hong Kong", "Hungary",
  "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "Israel", "Italy", "Jamaica",
  "Japan", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Kuwait", "Kyrgyzstan", "Laos",
  "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg",
  "Macau", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Marshall Islands",
  "Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia", "Moldova",
  "Monaco", "Mongolia", "Montserrat", "Morocco", "Mozambique", "Myanmar", "Namibia",
  "Nauru", "Nepal", "Netherlands", "Netherlands Antilles", "New Caledonia", "New Zealand",
  "Nicaragua", "Niger", "Nigeria", "Niue", "Norfolk Island", "North Korea", "Northern Marianas",
  "Norway", "Oman", "Pakistan", "Palau", "Panama", "Papua New Guinea", "Paraguay", "Peru",
  "Philippines", "Pitcairn Islands", "Poland", "Portugal", "Puerto Rico", "Qatar",
  "Reunion", "Romania", "Russia", "Rwanda", "Sqo Tome and Principe", "Saint Helena",
  "Saint Kitts and Nevis", "Saint Lucia", "Saint Pierre and Miquelon",
  "Saint Vincent and the Grenadines", "Samoa", "San Marino", "Saudi Arabia", "Senegal",
  "Seychelles", "Sierra Leone", "Singapore", "Slovakia", "Slovenia", "Solomon Islands",
  "Somalia", "South Africa", "South Georgia and the South Sandwich Islands", "South Korea",
  "Spain", "Sri Lanka", "Sudan", "Suriname", "Svalbard and Jan Mayen", "Swaziland", "Sweden",
  "Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "The Bahamas",
  "The Gambia", "Togo", "Tokelau", "Tonga", "Trinidad and Tobago", "Tunisia", "Turkey",
  "Turkmenistan", "Turks and Caicos Islands", "Tuvalu", "Virgin Islands", "Uganda",
  "Ukraine", "United Arab Emirates", "United Kingdom",
  "United States", "United States Minor Outlying Islands", "Uruguay", "Uzbekistan",
  "Vanuatu", "Vatican City", "Venezuela", "Vietnam", "Wallis and Futuna", "Western Sahara",
  "Yemen", "Yugoslavia", "Zambia", "Zimbabwe"
};

사용자가 에 입력할 때 드롭다운 목록에 제공될 제안 목록입니다. AutoCompleteTextView 위젯.

애플리케이션을 실행합니다. 입력할 때 다음과 같이 표시됩니다.

Example auto-complete screenshot listing names that contain

추가 정보

애플리케이션 코드는 콘텐츠가 아닌 동작에 집중해야 하므로 하드 코딩된 문자열 배열을 사용하는 것은 권장되지 않습니다. 콘텐츠를 보다 쉽게 수정하고 콘텐츠를 쉽게 지역화하려면 문자열과 같은 애플리케이션 콘텐츠를 코드에서 외부화해야 합니다. 하드 코딩된 문자열은 이 자습서에서 간단하게 사용하고 AutoCompleteTextView 위젯. 대신 애플리케이션은 XML 파일에서 이러한 문자열 배열을 선언해야 합니다. 이 작업은 프로젝트 res/values/strings.xml 파일의 리소스를 사용하여 <string-array> 수행할 수 있습니다. 예시:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="countries_array">
        <item>Bahrain</item>
        <item>Bangladesh</item>
        <item>Barbados</item>
        <item>Belarus</item>
        <item>Belgium</item>
        <item>Belize</item>
        <item>Benin</item>
    </string-array>
</resources>

에 대해 이러한 리소스 문자열을 ArrayAdapter사용하려면 원본을 바꿉니다. ArrayAdapter 생성자 줄은 다음과 같습니다.

string[] countries = Resources.GetStringArray (Resource.array.countries_array);
var adapter = new ArrayAdapter<String> (this, Resource.layout.list_item, countries);

참조

이 페이지의 일부는 Android 오픈 소스 프로젝트에서 만들고 공유하고 Creative Commons 2.5 특성 라이선스에 설명된 용어에 따라 사용되는 작업을 기반으로 하는 수정 사항입니다. 이 자습서는 Android 자동 완성 자습서*를 기반으로 합니다.