définir afficher l'alignement du texte au centre dans spinner dans android

mise à Jour

le lien de question mentionné n'existe plus. Mais en raison du nombre élevé de voix et de la serviabilité pour l'avenir, le lien ne devrait pas être supprimé.

le titre de la question liée était -

voir-texte-dans-le-centre-de-la-toupie-quand-sélectionnez-de-la-drop-down-liste

Original

possible doublon avec https://stackoverflow.com/q/4545559/760489

je veux aligner le texte de vue de spinner au centre. Je cherche sur google mais je n'ai rien trouvé, est-ce que quelqu'un est au courant? toute aide ou suggestion est appréciée

Merci

27
demandé sur Amit K. Saha 2011-09-22 11:21:58

7 réponses

créer un adaptateur pour votre fileur comme ceci,

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;

    }

};

Now your layout 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 broche,

spinner.setAdapter(adapter);
52
répondu Andro Selva 2013-03-07 06:42:23

vous devez définir votre propre mise en page 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>
35
répondu ihrupin 2013-08-07 04:03:25

c'est très simple, il suffit de créer un xml fichier nommé spinner_item.xml avec le 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 , en dépit de l'ajout de la ressource de vue par défaut d'android ajouter votre ressource de vue personnalisée comme

ArrayAdapter<String> adapter= new ArrayAdapter<String>(context, R.layout.spinner_item, myList);
 adapter.setDropDownViewResource(R.layout.spinner_item);

la ligne d'alignement du texte fera l'affaire.

11
répondu rajesh 2017-02-24 09:30:19

cela fonctionne sans changement de mise en page

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
               ((TextView) adapterView.getChildAt(0)).setGravity(Gravity.CENTER);
        }
 });
5
répondu Borja 2016-07-20 10:22:44

en retard au jeu, mais je voulais ajouter ceci pour les futurs utilisateurs juste parce que je l'ai trouvé une solution simple pour mon problème. Il m'a permis de centrer du texte simple sans créer une 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 un layout personnalisé 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 spinner simple.

3
répondu zgc7009 2014-06-09 18:00:28

Réglage textAlignment à center place 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"/>
2
répondu minhazur 2018-04-08 17:32:30

laissez-moi répondre. Il est également important de faire de l'espace dans Spinner.

Mauvais:

<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>

à droite:

<Spinner
android:id="@+id/spinner"
android:layout_width="100dp"
android:layout_height="wrap_content"
/>
-10
répondu Michal 2014-01-26 08:38:39