afficher-le-texte-au-centre-de-la-fileuse-quand-choisir-dans-la-liste-déroulante
Je veux aligner le texte de la vue du spinner au centre. Je l'ai recherché sur Google, mais je n'ai rien trouvé, est-ce que quelqu'un est au courant? toute aide ou suggestion est appréciée
Créez un adaptateur pour votre spinner comme celui-ci,
ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, R.layout.my_spinner_style,array_of_values) {
public View getView(int position, View convertView,ViewGroup parent) {
View v = super.getView(position, convertView, parent);
((TextView) v).setTextSize(16);
return v;
}
public View getDropDownView(int position, View convertView,ViewGroup parent) {
View v = super.getDropDownView(position, convertView,parent);
((TextView) v).setGravity(Gravity.CENTER);
return v;
}
};
Maintenant, votre mise en page R.layout.my_spinner_style,
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+Android:id/text1"
style="?android:attr/spinnerItemStyle"
Android:singleLine="true"
Android:textColor="#ffffff"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:ellipsize="Marquee" />
Maintenant, réglez cet adaptateur sur votre spinner,
spinner.setAdapter(adapter);
Vous devez définir votre propre disposition pour l'élément spinner.
SpinnerAdapter adap = new ArrayAdapter<String>(this, R.layout.spinner_item, new String[]{"A", "B", "C"});
spriner.setAdapter(adap);
Où R.layout.spinner_item est une mise en page avec du contenu:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_height="fill_parent"
Android:layout_width="fill_parent"
Android:gravity="center"
Android:textColor="#000000"
Android:text="Sample Text"
Android:paddingBottom="5dp"
Android:paddingTop="5dp"></TextView>
C'est très simple, il suffit de créer un fichier xml
nommé spinner_item.xml
avec un contenu comme
<TextView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:textColor="#111111"
Android:padding="10dp"
Android:textAlignment="center"
/>
Maintenant, dans votre classe Java
, malgré l'ajout de la ressource d'affichage par défaut d'Android, ajoutez votre ressource d'affichage personnalisée en tant que
ArrayAdapter<String> adapter= new ArrayAdapter<String>(context, R.layout.spinner_item, myList);
adapter.setDropDownViewResource(R.layout.spinner_item);
La ligne textAlignment fera l'affaire.
Le réglage textAlignment to center placera le texte au centre.
Android: textAlignment = "center"
<Android.support.v7.widget.AppCompatSpinner
Android:id="@+id/spinner_areas"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_centerInParent="true"
Android:visibility="visible"
Android:gravity="center"
Android:textAlignment="center"/>
Cela fonctionne sans changements de disposition
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
((TextView) adapterView.getChildAt(0)).setGravity(Gravity.CENTER);
}
});
Tard dans le jeu, mais je voulais l'ajouter pour les futurs utilisateurs simplement parce que je l'ai trouvé une solution simple à mon problème. Cela m'a permis de centrer du texte simple sans créer de mise en page personnalisée. La façon dont je l'ai fait était d'utiliser padding
<Spinner
Android:id="@+id/example_spinner"
Android:layout_height="wrap_content"
Android:layout_width="wrap_content"
Android:paddingLeft="10dp"
Android:paddingRight="10dp"
Android:paddingTop="2dp"
Android:paddingBottom="2dp" />
J'ai réussi à centrer mon texte dans mon spinner en utilisant cette méthode. Cela ne fonctionnera probablement que pour les cas simples, mais vous voudrez probablement utiliser une disposition personnalisée pour les cas plus complexes de toute façon. C'est juste pour garder vos fichiers xml bas et éviter d'avoir à utiliser une mise en page personnalisée juste pour centrer un simple spinner.
Ajouter cette ligne dans Spinner
Android:textAlignment="center"
Voila!