45 votes

aligner le texte de la vue au centre dans le spinner dans Android

afficher-le-texte-au-centre-de-la-tourniquet-lorsque-sélectionner-dans-la-liste-déroulante

Je veux aligner le texte de vue du 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

61voto

Andro Selva Points 24018

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);

48voto

ihrupin Points 3590

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>

18voto

rajesh Points 171

C'est très simple, créez simplement un fichier xml 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 java , malgré l'ajout de la ressource de vue par défaut d'Android, ajoutez votre ressource de vue 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.

14voto

minhazur Points 3466

Définir textAlignment au centre 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"/>

5voto

Borja Points 775

Cela fonctionne sans modifications 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);
        }
 });

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X