web-dev-qa-db-fra.com

définir le texte de la vue aligner au centre dans le spinner dans android

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

35
Pratik

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);
57
Andro Selva

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>
38
ihrupin

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.

13
rajesh

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"/>
7
minhazur

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);
        }
 });
5
Borja

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.

2
zgc7009

Ajouter cette ligne dans Spinner

Android:textAlignment="center"

Voila!

1
Sanjit Prasad