Partager via


Saisie semi-automatique pour Xamarin.Android

AutoCompleteTextView est un élément d’affichage de texte modifiable qui affiche automatiquement les suggestions d’achèvement pendant que l’utilisateur tape. La liste des suggestions s’affiche dans un menu déroulant à partir duquel l’utilisateur peut choisir un élément par lequel remplacer le contenu de la zone d’édition.

Exemple de saisie semi-automatique

Vue d’ensemble

Pour créer un widget d’entrée de texte qui fournit des suggestions de saisie automatique, utilisez leAutoCompleteTextView Widget. Les suggestions sont reçues d’une collection de chaînes associées au widget via un ArrayAdapter.

Dans ce tutoriel, vous allez créer unAutoCompleteTextView widget qui fournit des suggestions pour un nom de pays.

<?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>

est TextView une étiquette qui présente leAutoCompleteTextView Widget.

Didacticiel

Démarrez un nouveau projet nommé HelloAutoComplete.

Créez un fichier XML nommé list_item.xml et enregistrez-le dans le dossier Resources/Layout . Définissez l’action de génération de ce fichier sur AndroidResource. Modifiez le fichier pour qu’il ressemble à ceci :

<?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> 

Ce fichier définit un simple TextView qui sera utilisé pour chaque élément qui apparaît dans la liste des suggestions.

Ouvrez Resources/Layout/Main.axml et insérez les éléments suivants :

<?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>

Ouvrez MainActivity.cs et insérez le code suivant pour leMéthode 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;
}

Une fois que l’affichage de contenu est défini sur la main.xml disposition, leAutoCompleteTextView le widget est capturé à partir de la disposition avec FindViewById. Un nouveau ArrayAdapter est ensuite initialisé pour lier la list_item.xml disposition à chaque élément de liste dans le COUNTRIES tableau de chaînes (défini à l’étape suivante). Enfin, SetAdapter() est appelé pour associer le ArrayAdapter àAutoCompleteTextView widget de sorte que le tableau de chaînes remplit la liste des suggestions.

À l’intérieur de la MainActivity classe, ajoutez le tableau de chaînes :

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"
};

Il s’agit de la liste des suggestions qui seront fournies dans une liste déroulante lorsque l’utilisateur tape dans leAutoCompleteTextView Widget.

Exécutez l’application. Au fur et à mesure que vous tapez, vous devriez voir quelque chose comme ceci :

Exemple de capture d’écran de saisie semi-automatique répertoriant les noms qui contiennent « ca »

Informations complémentaires

Notez que l’utilisation d’un tableau de chaînes codée en dur n’est pas une pratique de conception recommandée, car le code de votre application doit se concentrer sur le comportement, et non sur le contenu. Le contenu de l’application, comme les chaînes, doit être externalisé à partir du code pour faciliter les modifications du contenu et faciliter la localisation du contenu. Les chaînes codées en dur sont utilisées dans ce tutoriel uniquement pour le rendre simple et se concentrer sur leAutoCompleteTextView Widget. Au lieu de cela, votre application doit déclarer ces tableaux de chaînes dans un fichier XML. Cela peut être effectué avec une <string-array> ressource dans votre fichier projet res/values/strings.xml . Par exemple :

<?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>

Pour utiliser ces chaînes de ressources pour , ArrayAdapterremplacez l’originalArrayAdapter ligne du constructeur avec ce qui suit :

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

Références

Les parties de cette page sont des modifications basées sur le travail créé et partagé par le projet Open Source Android et utilisés selon les termes décrits dans la licence d’attribution Creative Commons 2.5. Ce tutoriel est basé sur le tutoriel Android Auto Complete*.