Como alterar o tamanho do texto giratório e a cor do texto?

432

No meu aplicativo Android, estou usando o spinner e carreguei dados do banco de dados SQLite no spinner, e ele está funcionando corretamente. Aqui está o código para isso.

Spinner spinner = (Spinner) this.findViewById(R.id.spinner1);
List<String> list = new ArrayList<String>();
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>  (this,android.R.layout.simple_spinner_item, list);
cursor.moveToFirst();

list.add("All Lists");

if (cursor.getCount() > 0) {
    for (int i = 0; i < cursor.getCount(); i++) {
        keyList[i] = cursor.getString(cursor.getColumnIndex(AndroidOpenDbHelper.KEYWORD));
        list.add(keyList[i]);
        cursor.moveToNext();
    }
}
Database.close();
cursor.close();
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(dataAdapter);

Agora, quero alterar a cor e o tamanho do texto dos dados do girador. Eu usei as seguintes linhas XML para minha tag giratória no meu arquivo XML, mas não está funcionando.

android:textColor="@android:color/white"
android:textSize="11dp"

Como posso alterar a cor e o tamanho do texto do meu spinner?

Dinesh Anuruddha
fonte
verifique os seguintes sites [StackoverFlow] [1] [stackoverflow] [2] [stackoverflow] [3] Acho que essa é uma pergunta duplicada [1]: stackoverflow.com/questions/4880413/… [2]: stackoverflow.com/questions / 4989817 /… [3]: stackoverflow.com/questions/5836254/…
user1203673
1
Para textSize, o correto é usar SP ... android: textSize = "11sp"
Diego Venâncio

Respostas:

780

Crie um arquivo XML personalizado para o seu item giratório.

spinner_item.xml:

Dê sua cor e tamanho personalizados ao texto deste arquivo.

<?xml version="1.0" encoding="utf-8"?>

<TextView  
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"
    android:textSize="20sp"
    android:gravity="left"  
    android:textColor="#FF0000"         
    android:padding="5dip"
    />

Agora use esse arquivo para mostrar seus itens giratórios como:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.spinner_item,list);

Você não precisa definir o recurso suspenso. Levará spinner_item.xmlapenas para mostrar seus itens no girador.

Hiral Vadodaria
fonte
2
O texto @Hiral ficará branco apenas para o item selecionado atual.
tesla
8
@ Santhosh bem, você tem que adicionar id ao TextView, basta acrescentar lá android:id="@+id/customSpinnerItemTextView". Se você tivesse depurado isso, saberia disso.
vilpe89
3
@ vilpe89 você poderia modificar o código acima para mostrar o que você quer dizer com isso? para onde vai esse andróide: id? certamente não na tag giratória, porque ela tem seu próprio ID. mas não faz sentido adicioná-lo na tag textview que você criou acima. como faço para referenciar que desejo usar essa tag diretamente do XML? Além disso, ao criar o XML a partir do Eclipse, não vejo nenhuma opção para criar um arquivo XML contendo apenas um TextView, como isso funciona ???
Michael
29
Apenas uma pequena nota. Textsize devem estar usando sp em vez de dp / mergulho
ymerdrengene
18
isso não pode ser feito usando apenas estilo? Estou surpreso como pequenas coisas é tão difícil de estilo em android .. isso é frustrante .. Eu queria que eles tinham um sistema de styling como CSS
yeahman
183

Simples e nítido ...:

private OnItemSelectedListener OnCatSpinnerCL = new AdapterView.OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {

       ((TextView) parent.getChildAt(0)).setTextColor(Color.BLUE);
       ((TextView) parent.getChildAt(0)).setTextSize(5);

    }

    public void onNothingSelected(AdapterView<?> parent) {

    }
};
Ashraf
fonte
19
Esta é a melhor solução para mim, porque eu precisava alterar a cor do texto no botão giratório, mas não na lista exibida. Obrigado.
Peter.bartos 22/09/12
7
Para mim, os pisca quesito cor, passando de cor original para a cor que eu escolhi
Felipe Conde
@FelipeConde Você já encontrou uma resposta? Eu tenho a mesma pergunta. Minha pergunta está aqui: stackoverflow.com/questions/33908564/…
Rock Lee
@FelipieConde Para você, primeiro pega a cor da subida e depois muda para outra cor manualmente, para que pareça tão cansada. At First It Takes <item name = "colorAccent"> @ cor / color_primary </ item> Então você alterado manualmente por programático, Então você sente um piscar
Ashraf
2
Isso funcionou para mim, mas o meu problema é quando eu voltar de um aplicativo fragmento cai como ele recebe um ponteiro nulo no código acima
Akshay Shah
145

Se todos os giradores puderem ter a mesma cor de texto para os itens do TextView, outra abordagem é usar um estilo personalizado para os itens suspensos do girador:

Em res/values/styles.xml:

<resources>
    <style name="AppBaseTheme" parent="android:Theme.Light">
    </style>

    <style name="AppTheme" parent="AppBaseTheme">
        <item name="android:spinnerDropDownItemStyle">@style/mySpinnerItemStyle</item>
    </style>

    <style name="mySpinnerItemStyle" parent="@android:style/Widget.Holo.DropDownItem.Spinner">
        <item name="android:textColor">@color/my_spinner_text_color</item>
    </style>
</resources>

E defina sua cor personalizada em res / values ​​/ colors.xml:

<color name="my_spinner_text_color">#808080</color>
Whypee
fonte
2
E como aplicar esta solução ao tema Appcompt? Eu tentei, substituindo o tema principal "@ style / Widget.AppCompat.DropDownItem.Spinner" e não deu certo
GyRo
11
Gostaria de acrescentar também: <item name = "android: spinnerItemStyle"> @ style / mySpinnerItemStyle </item> Isso garante que o texto recolhido tenha a mesma cor - caso esse seja o comportamento desejado.
loop infinito
4
não funciona para mim também não, o estilo é completamente ignorada
diogo.abdalla
1
@Whypee por favor edite sua resposta de acordo com as sugestões do infinito loop que funcionou perfeitamente para mim
Chintan Desai
4
Para o tema AppCompat, remova android:assim<item name="spinnerDropDownItemStyle">@style/mySpinnerItemStyle</item>
Roman_D 28/09
73

Aqui está um link que pode ajudá-lo a alterar a cor do Spinner :

Clique aqui

<Spinner
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/spinner"
    android:textSize="20sp"
    android:entries="@array/planets"/>

Você precisa criar seu próprio arquivo de layout com uma definição personalizada para o item spinner spinner_item.xml :

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="20sp"
    android:textColor="#ff0000" />

Se você deseja personalizar os itens da lista suspensa, precisará criar um novo arquivo de layout. spinner_dropdown_item.xml :

<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    style="?android:attr/spinnerDropDownItemStyle"
    android:maxLines="1"
    android:layout_width="match_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
    android:ellipsize="marquee"
    android:textColor="#aa66cc"/>

E finalmente outra mudança na declaração do spinner:

ArrayAdapter adapter = ArrayAdapter.createFromResource(this,
R.array.planets_array, R.layout.spinner_item);

adapter.setDropDownViewResource(R.layout.spinner_dropdown_item);
spinner.setAdapter(adapter);

É isso aí.

Niib Fouda
fonte
2
Essa foi uma resposta automatizada resultante da revisão de postagens de novos usuários. Fico feliz em ver que você editou a resposta! :)
Marko
1
Parece que android:textSize="20sp"no primeiro trecho de código é inútil: o tamanho do texto do controle é definido nospinner_item.xml
DenisGL
23

Se você trabalha com android.support.v7.widget.AppCompatSpinner, aqui está a solução mais simples testada usando estilos:

 <android.support.v7.widget.AppCompatSpinner
                    android:id="@+id/spefcialFx"
                    style="@style/Widget.AppCompat.Spinner.Underlined"
                    android:layout_width="200dp"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="4dp"
                    android:theme="@style/Spinner"
                    android:entries="@array/special_fx_arrays"
                    android:textSize="@dimen/text_size_normal"></android.support.v7.widget.AppCompatSpinner>

E o estilo:

<style name="Spinner" parent="Widget.AppCompat.Light.DropDownItem.Spinner">
        <item name="android:paddingStart">0dp</item>
        <item name="android:paddingEnd">0dp</item>
        <item name="android:textColor">@color/white</item>
        <item name="android:backgroundTint">@color/red</item>
        <item name="android:textSize">14sp</item>
    </style>

A única desvantagem é o android: backgroundTint define a cor para a seta suspensa e o plano de fundo suspenso.

voytez
fonte
3
você usa, style="@style/Widget.AppCompat.Spinner.Underlined"mas você tem apenas style name="Spinner"...
user25
1
paddingStartrequer API 17, backgroundTintrequer API 21.
CoolMind
18

Para evitar atrasos, você precisa não apenas definir as propriedades do texto no onItemSelectedouvinte, mas também no onCreatemétodo da Atividade (mas é um pouco complicado).

Especificamente, você precisa colocar isso onCreatedepois de configurar o adaptador:

spinner.setSelection(0, true);
View v = spinner.getSelectedView();
((TextView)v).setTextColor(backgroundColor);

E depois coloque isso em onItemSelected:

((TextView) view).setTextColor(backgroundColor);

Aqui está um exemplo completo:

@Override  
protected void onCreate(Bundle savedInstanceState)
{  
    Spinner spinner = (Spinner) findViewById(R.id.spinner); 

    //Set the choices on the spinner by setting the adapter.  
    spinner.setAdapter(new SpinnerAdapter(toolbar.getContext(), new String[]{"Overview", "Story", "Specifications", "Poll", "Video"}, accentColor, backgroundColor));

    //Set the text color of the Spinner's selected view (not a drop down list view) 
    spinner.setSelection(0, true);
    View v = spinner.getSelectedView();
    ((TextView)v).setTextColor(backgroundColor);

    //Set the listener for when each option is clicked.  
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
    {  

        @Override  
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
        {  
           //Change the selected item's text color  
           ((TextView) view).setTextColor(backgroundColor);
        }  

        @Override  
        public void onNothingSelected(AdapterView<?> parent)
        {  
        }  
    });  

}  

Para mais detalhes, veja minha pergunta .

Rock Lee
fonte
15

Se você deseja que a cor do texto seja alterada apenas no item selecionado, isso pode ser uma solução alternativa possível. Funcionou para mim e deve funcionar para você também.

spinner.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                ((TextView) spinner.getSelectedView()).setTextColor(Color.WHITE);
            }
        });
vishal-wadhwa
fonte
6

Para alguém que precisa de apenas um Stylecaminho AppCompat.

Resultado
insira a descrição da imagem aqui insira a descrição da imagem aqui

styles.xml

<resources>
    ... 
    <style name="Spinner" parent="Widget.AppCompat.Light.DropDownItem.Spinner">
        <item name="android:paddingStart">0dp</item>
        <item name="android:paddingEnd">0dp</item>
        <item name="android:textColor">@color/material_grey_700</item>
        <item name="android:textSize">12sp</item>
    </style>
</resources>

your_spinner_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
    ...

    <android.support.v7.widget.AppCompatSpinner
        android:id="@+id/content_spinner"
        style="@style/Widget.AppCompat.Spinner.Underlined"
        android:layout_width="140dp"
        android:layout_height="wrap_content"
        android:entries="@array/shipping_tracking_carrier_names"
        android:spinnerMode="dropdown"
        android:theme="@style/Spinner" />

    <EditText
        android:id="@+id/content_input"
        android:layout_width="140dp"
        android:layout_height="wrap_content"
        android:inputType="text"
        android:maxLines="1"
        android:paddingEnd="8dp"
        android:paddingStart="8dp"
        android:textColor="@color/material_grey_700"
        android:textSize="12sp" />

    ...
</LinearLayout>    

Plus
E se você deseja definir android:entriesprogramaticamente com estilo definido.
Tente isso.

AppCompatSpinner spinner = findViewById(R.id.content_spinner);
CharSequence[] entries = getResources().getTextArray(R.array.shipping_tracking_carrier_names);
ArrayAdapter<CharSequence> adapter = new ArrayAdapter<>(spinner.getContext(), android.R.layout.simple_spinner_item, entries);
adapter.setDropDownViewResource(android.support.v7.appcompat.R.layout.support_simple_spinner_dropdown_item);
spinner.setAdapter(adapter);

Como no código, usar o mesmo Contextcom o Spinnermais importante.

spinner.getContext()
wonsuc
fonte
5

Para alterar a cor do texto giratório:

 public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            ((TextView) parent.getChildAt(0)).setTextColor(Color.WHITE);}
Hanisha
fonte
Este é o mais simples e funcionou para mim, obrigado!
Mousa Alfhaily
Eu também gosto desta solução. é simples e funciona bem.
Korchix 04/07/19
4

Em vez de criar um layout personalizado para obter um tamanho pequeno, e se você quiser usar o tamanho pequeno interno do Android LAYOUT para o spinner, use:

"android.R.layout.simple_gallery_item" em vez de "android.R.layout.simple_spinner_item".

ArrayAdapter<CharSequence> madaptor = ArrayAdapter
            .createFromResource(rootView.getContext(),
                                R.array.String_visitor,
                                android.R.layout.simple_gallery_item);

Pode reduzir o tamanho do layout do girador. É apenas um truque simples.

Se você deseja reduzir o tamanho de uma lista suspensa, use este:

madaptor.setDropDownViewResource(android.R.layout.simple_gallery_item);
Hemant Shori
fonte
4

A maneira mais fácil de reutilizar / alterar os recursos do Android.R.layout é apenas seguir a definição. No Android Studio, faça Ctrl+ Bno android.R.layout.simple_spinner_item.xml.

O levará ao arquivo de recurso. Apenas copie o arquivo de recurso e adicione um novo layout na pasta Package.R.layout e altere o textColor do textview como desejar e, em seguida, chame-o no adaptador como este:

ArrayAdapter<String> adapter = new ArrayAdapter<String(Context,R.layout.spinner_item, spinnerlist);
ZygoteInit
fonte
4

Para quem quiser mudar de DrowDownIconcor, você pode usar assim

spinner.getBackground().setColorFilter(Color.parseColor("#ffffff"), PorterDuff.Mode.SRC_ATOP);
AMAN SINGH
fonte
você pode tentar<item name="android:colorControlNormal" tools:targetApi="lollipop">@color/light_gray</item>
AMAN SINGH
colocar esta linha em seu estiloAppTheme
AMAN SINGH
Este é o código que funcionouDrawable spinnerDrawable = spinner.getBackground().getConstantState().newDrawable(); spinnerDrawable.setColorFilter(getResources().getColor(R.color.md_white_1000), PorterDuff.Mode.SRC_ATOP); if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { spinner.setBackground(spinnerDrawable); }else{ spinner.setBackgroundDrawable(spinnerDrawable); }
Edijae Crusar
4

Pode alterar a cor do texto substituindo o método getView da seguinte maneira:

 new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_dropdown_item, list()){
                @Override
                public View getView(int position, View convertView, @NonNull ViewGroup parent) {
                    View view = super.getView(position, convertView, parent);
                    //change the color to which ever you want                    
                    ((CheckedTextView) view).setTextColor(Color.RED);
                    //change the size to which ever you want                    
                    ((CheckedTextView) view).setTextSize(5);
                    //for using sp values use setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
                    return view;
                }
    }
Madhur
fonte
3

Mais simples: funciona para mim

TextView spinnerText = (TextView) spinner.getChildAt(0);

spinnerText.setTextColor(Color.RED);
Waqar Ahmed Shujrah
fonte
1
spinner.getChildAt (0) retorna nulo para mim: /
Karl Heinz Brehme Arredondo 23/02
2
Eu acho que essa técnica é para API 19+.
Jose Manuel Abarca Rodríguez
2
<?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:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textColor="#fff"
    android:ellipsize="marquee"
    android:textAlignment="inherit"/>

basta usar isso:

ArrayAdapter<String> adapter_category = new ArrayAdapter<String>(this,
    R.layout.spinner_list_item, categories);
adapter_category
    .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
santosh
fonte
1

Outra variação da solução do Ashraf seria garantir que você levasse em consideração o tamanho da tela. Você precisará colocar o botão giratório no onCreate e definir o ouvinte depois de configurar o adaptador:

//set your adapter with default or custom spinner cell, then://
serverSpinner.setOnItemSelectedListener(spinnerSelector);
serverSpinner.setSelection(defaultServer);

Em seguida, você pode começar a alterar o tamanho do texto da exibição exibida antes do clique no botão giratório:

private AdapterView.OnItemSelectedListener spinnerSelector = new AdapterView.OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
        boolean tabletSize = getResources().getBoolean(R.bool.isTablet);
        boolean largeTablet = getResources().getBoolean(R.bool.isLargeTablet);
        if (tabletSize) { ((TextView)parent.getChildAt(0)).setTextSize(16); }
        else if (largeTablet) { ((TextView)parent.getChildAt(0)).setTextSize(18); }
        else { ((TextView)parent.getChildAt(0)).setTextSize(12); }
    }
    public void onNothingSelected(AdapterView<?> parent) {

    }
};

Tudo o que você precisa fazer é criar pastas específicas de layout como esta:

values-sw360dp

values-sw600dp

values-sw800dp

e adicione um arquivo xml chamado "bool.xml" em cada uma dessas pastas:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="isTablet">false</bool>
    <bool name="isLargeTablet">false</bool>
</resources>
whyoz
fonte
1

Primeiro, precisamos criar o xmlarquivo de recurso simples para o textviewseguinte, como abaixo:

<?xml version="1.0" encoding="utf-8"?>

 <TextView  
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"
    android:textSize="20sp"
    android:gravity="left"  
    android:textColor="#FF0000"         
    android:padding="5dip"
    />   

e salve. depois de definido na lista de adaptadores.

Ishor Neupane
fonte
1

você pode ter esse tipo de adaptador para spinner, totalmente personalizado:

 ArrayAdapter<String> genderAdapter = new ArrayAdapter<String>(getActivity(), R.layout.spinner_text, genderList) {

        public View getView(int position, View convertView, ViewGroup parent) {
            View v = super.getView(position, convertView, parent);
            ((TextView) v).setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
            ((TextView) v).setTextColor(Color.parseColor("#676767"));
            ((TextView) v).setTypeface(vrFont);
            return v;
        }

        public View getDropDownView(int position, View convertView, ViewGroup parent) {
            View v = super.getDropDownView(position, convertView, parent);
            ((TextView) v).setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
            ((TextView) v).setTypeface(vrFont);
            ((TextView) v).setTextColor(Color.parseColor("#676767"));

            if (position == 0) {
                ((TextView) v).setTextColor(Color.parseColor("#979797"));
            }

            return v;
        }

enquanto R.layout.spinner_text é:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/text1"
style="?android:attr/spinnerItemStyle"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:gravity="center_vertical|left"
android:ellipsize="marquee"
android:maxLines="1"
android:textColor="@color/whiteThree" />
Falcão
fonte
1

Se você deseja um método simples, para adicionar itens a uma lista suspensa, geralmente os adiciona ao strings.xml. Aqui está um exemplo de como adicionar cor usando o arquivo strings.xml:

SELECIONAR GAMA DE IDADE

<string-array name="age_array">

   <item> 0-6 </item>                               //No custom colour

  <item><font fgcolor='#FF4CD964'> 12+ </font></item> //With custom colour

</string-array>
Jamie
fonte
truque bonito ... útil e rápido para um fora-rotadores, necessidades de cor para ser uma cadeia de valor de cor crua não de xml
me_
0

Eu fiz isso da seguinte maneira: uso os métodos getDropDownView () e getView ().

Use getDropDownView()para o Spinner aberto.

@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
  View view = convertView;
  if (view == null) {
    LayoutInflater vi = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    view = vi.inflate(R.layout.context_row_icon, null);
  }
  TextView mTitle = (TextView) view.findViewById(R.id.context_label);
  ImageView flag = (ImageView) view.findViewById(R.id.context_icon);                

  mTitle.setText(values[position].getLabel(activity));

  if (!((LabelItem) getItem(position)).isEnabled()) {
    mTitle.setTextColor(activity.getResources().getColor(R.color.context_item_disabled));
  } else {
    mTitle.setTextColor(activity.getResources().getColor(R.color.context_item));
  }
  return view;
}

E use getView()para Spinner fechado.

@Override
public View getView(int position, View convertView, ViewGroup parent) {
  View view = convertView;
  if (view == null) {
    LayoutInflater vi = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    view = vi.inflate(R.layout.context_row_icon, null);
  }
  TextView mTitle = (TextView) view.findViewById(R.id.context_label);
  ImageView flag = (ImageView) view.findViewById(R.id.context_icon);

  mTitle.setText(values[position].getLabel(activity));
  mTitle.setTextColor(activity.getResources().getColor(R.color.context_item_disabled));

  return view;
}
Bhavinkumar Patel
fonte
É devidamente testado código e trabalhou em aplicação na AppStore
Bhavinkumar Patel
0

Tente este método. Está funcionando para mim.

@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
    TextView textView = (TextView) view;
    ((TextView) adapterView.getChildAt(0)).setTextColor(Color.RED);
    ((TextView) adapterView.getChildAt(0)).setTextSize(20);
    Toast.makeText(this, textView.getText()+" Selected", Toast.LENGTH_SHORT).show();
}
Tushar Lathiya
fonte
0

basta adicionar um novo estilo como este:

<style name="mySpinnerItemStyle" parent="ThemeOverlay.AppCompat.Dark">
    <item name="android:textColor">#000</item>
    <item name="android:color">#000</item>
</style>

e use-o:

<Spinner
      android:id="@+id/spinnerCategories"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      style="@style/mySpinnerItemStyle"
      android:layout_margin="5dp" />
Elyas Nategh
fonte
0
    String typeroutes[] = {"Select","Direct","Non Stop"};
    Spinner typeroute;

    typeroute = view.findViewById(R.id.typeroute);

    final ArrayAdapter<String> arrayAdapter5 = new ArrayAdapter<String>(
                getActivity(), android.R.layout.simple_spinner_item, typeroutes) {
            @Override
            public boolean isEnabled(int position) {
                if (position == 0) {
                    // Disable the first item from Spinner
                    // First item will be use for hint
                    return false;
                } else {
                    return true;
                }
            }

            public View getView(int position, View convertView, ViewGroup parent) {
                View v = super.getView(position, convertView, parent);
                ((TextView) v).setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
                ((TextView) v).setTextColor(Color.parseColor("#ffffff"));
                return v;
            }         ---->in this line very important so add this

            @Override
            public View getDropDownView(int position, View convertView,
                                        ViewGroup parent) {
                View view = super.getDropDownView(position, convertView, parent);
                TextView tv = (TextView) view;
                if (position == 0) {
                    // Set the hint text color gray
                    tv.setTextColor(Color.GRAY);
                } else {
                    tv.setTextColor(Color.BLACK);
                }
                return view;
            }
        };

        arrayAdapter5.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        typeroute.setAdapter(arrayAdapter5);

isso é tudo, aproveite sua codificação ...

Mahendren
fonte