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.
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 :
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 , ArrayAdapter
remplacez 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
- Recette AutoCompleteTextView – Exemple de projet Xamarin.Android pour le
AutoCompleteTextView
ArrayAdapter
AutoCompleteTextView
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*.