Xamarin autocomplete

443
15 июля 2017, 06:02

Как сделать autocomplete то есть поле ввода, после ввода в которое предлагается схожий текст. Что использовать?

Answer 1

Создайте XML-файл с именем list_item.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);
  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. Затем инициализируется новый ArrayAdapter для привязки макета list_item.xml к каждому элементу списка в массив строк COUNTRIES. Наконец, 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",
 "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium","Belize", 
  "Benin", "Bermuda", "Bhutan", "Bolivia",
 "Bosnia and Herzegovina", "Botswana","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"
};  

Читайте тут про Autocomplete Text View

Для Xamarin.Forms можете читать книгу

Mark Reynolds "Xamarin Essentials"
от страници 157.

READ ALSO
Открыть .pyc файл с помощью C#

Открыть .pyc файл с помощью C#

У меня есть проект на C#, но некоторые его части написанны python 35

331
Отловить клик по браузеру c#

Отловить клик по браузеру c#

Как можно отловить нажатие на браузер ? даже в пустое место ? Пока использую метод webBrowser1_DocumentCompleted , но он работает только, если я спровоцирую...

263
Как проверить открыт ли сейчас файл?.NET

Как проверить открыт ли сейчас файл?.NET

Нужно првоерить открыт ли сейчас файл в других процессах

350