Как изменить размер текста и цвет текста?

432

В моем приложении для Android я использую счетчик, и я загрузил данные из базы данных SQLite в счетчик, и он работает правильно. Вот код для этого.

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

Теперь я хочу изменить цвет текста и размер текста данных счетчика. Я использовал следующие строки XML для моего тега счетчика в моем XML-файле, но он не работает.

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

Как я могу изменить цвет текста и размер текста моего счетчика?

Динеш Ануруддха
источник
проверьте следующие сайты [StackoverFlow] [1] [stackoverflow] [2] [stackoverflow] [3] Я думаю, что это дублирующий вопрос [1]: stackoverflow.com/questions/4880413/… [2]: stackoverflow.com/questions / 4989817 / ... [3]: stackoverflow.com/questions/5836254/...
user1203673
попробуйте этот пост stackoverflow.com/questions/6159113/…
Ajay
1
Для textSize правильным является использование SP ... android: textSize = "11sp"
Диего Венансио

Ответы:

780

Создайте пользовательский XML-файл для вашего блесна.

spinner_item.xml:

Присвойте свой цвет и размер тексту в этом файле.

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

Теперь используйте этот файл, чтобы показать ваши элементы блесны как:

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

Вам не нужно устанавливать выпадающий ресурс. Это займет spinner_item.xmlтолько показать свои вещи в блесне.

Hiral Vadodaria
источник
2
Текст @Hiral будет белым только для текущего выбранного элемента.
Тесла
8
@SANTHOSH ну, вы должны добавить идентификатор в TextView, просто добавьте туда android:id="@+id/customSpinnerItemTextView". Если бы вы отладили это, вы бы знали об этом.
vilpe89
3
@ vilpe89 не могли бы вы изменить приведенный выше код, чтобы показать, что вы подразумеваете под этим? Куда идет этот android: id? конечно, не в теге spinner, потому что у него есть собственный идентификатор. но нет смысла добавлять его в тег textview, который вы создали выше. Как мне указать, что я хочу использовать этот тег непосредственно из XML? Кроме того, при создании XML из Eclipse я не вижу никакой возможности создать файл XML, содержащий только TextView, как это работает ???
Майкл
29
Просто маленькая записка. Textsize следует использовать sp вместо dp / dip
ymerdrengene
18
это не может быть сделано с использованием только стиля? Я удивлен, как мелкие вещи так сложно
стилизовать в андроиде
183

Простой и четкий ...:

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

    }
};
Ашраф
источник
19
Это лучшее решение для меня, потому что мне нужно было изменить цвет текста в счетчике, а не в появившемся списке. Спасибо.
peter.bartos
7
Для меня цвет элемента мигает, переходя от исходного цвета к цвету, который я выбрал
Фелипе Конде
@FelipeConde Вы когда-нибудь находили ответ? У меня такой же вопрос. Мой вопрос здесь: stackoverflow.com/questions/33908564/…
Рок Ли
@FelipieConde Для вас сначала требуется цвет всплытия, затем вы вручную меняете цвет на другой, поэтому он выглядит таким уставшим. Сначала это занимает <item name = "colorAccent"> @ color / color_primary </ item> Затем вы вручную меняете программно, поэтому вы чувствуете моргание
Ашраф
2
это сработало для меня, но моя проблема в том, что, когда я возвращаюсь из фрагмента приложения, происходит сбой, поскольку он получает нулевой указатель на приведенный выше код
Акшай Шах,
145

Если все прядильщики могут иметь одинаковый цвет текста для своих элементов TextView, другой подход заключается в использовании собственного стиля для выпадающих элементов прядильщика:

В 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>

И определите свой собственный цвет в res / values ​​/ colors.xml:

<color name="my_spinner_text_color">#808080</color>
Whypee
источник
2
А как применить это решение к теме Appcompt? Я попробовал это, переопределив родительскую тему "@ style / Widget.AppCompat.DropDownItem.Spinner", и это не сработало
GyRo
11
Я бы добавил также добавить: <item name = "android: spinnerItemStyle"> @ style / mySpinnerItemStyle </ item> Это гарантирует, что свернутый текст будет иметь тот же цвет - в случае, если это желаемое поведение.
бесконечный цикл
4
у меня тоже не работает, стиль полностью игнорируется
diogo.abdalla
1
@ Whypee, пожалуйста, отредактируйте свой ответ в соответствии с предложениями бесконечного цикла, он отлично сработал для меня
Chintan Desai
4
Для темы AppCompat просто удалите android:вот так<item name="spinnerDropDownItemStyle">@style/mySpinnerItemStyle</item>
Roman_D
73

Вот ссылка, которая может помочь вам изменить цвет Spinner :

кликните сюда

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

Вам нужно создать свой собственный файл макета с пользовательским определением для элемента 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" />

Если вы хотите настроить элементы выпадающего списка, вам нужно будет создать новый файл макета. 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"/>

И, наконец, еще одно изменение в объявлении счетчика:

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

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

Вот и все.

Нииб Фуда
источник
2
Это был автоматический ответ, полученный при просмотре сообщений новыми пользователями. Рад видеть, что вы отредактировали ответ! :)
Марко
1
Кажется, что android:textSize="20sp"в первом фрагменте кода бесполезно: текст элемента управления определен вspinner_item.xml
DenisGL
23

Если вы работаете с android.support.v7.widget.AppCompatSpinner, вот самое простое проверенное решение с использованием стилей:

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

И стиль:

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

Единственным недостатком является Android: backgroundTint устанавливает цвет для стрелки раскрывающегося списка и фон раскрывающегося списка.

voytez
источник
3
вы используете, style="@style/Widget.AppCompat.Spinner.Underlined"но у вас есть только style name="Spinner"...
user25
1
paddingStartтребуется API 17, backgroundTintтребуется API 21.
CoolMind
18

Чтобы предотвратить отставание, вам нужно не только установить свойства текста в onItemSelectedслушателе, но также и в onCreateметоде Activity (но это немного сложно).

В частности, вам нужно вставить это onCreateпосле установки адаптера:

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

И затем вставьте это в onItemSelected:

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

Вот полный пример:

@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)
        {  
        }  
    });  

}  

Для более подробной информации, смотрите мой вопрос .

Рок Ли
источник
15

Если вы хотите, чтобы цвет текста изменялся только в выбранном элементе, то это может быть возможным обходным путем. Это сработало для меня и должно работать на вас.

spinner.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                ((TextView) spinner.getSelectedView()).setTextColor(Color.WHITE);
            }
        });
Вишал-Wadhwa
источник
6

Для того, кому нужен только Styleпуть AppCompat.

Результат
введите описание изображения здесь введите описание изображения здесь

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>    

Плюс
И если вы хотите установить android:entriesпрограммно с определенным стилем.
Попробуй это.

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

Как и в коде, использование же Contextс Spinnerнаиболее важной вещью.

spinner.getContext()
wonsuc
источник
5

Чтобы изменить цвет текста счетчика:

 public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            ((TextView) parent.getChildAt(0)).setTextColor(Color.WHITE);}
Hanisha
источник
Это самое простое, и это сработало для меня, спасибо!
Муса Альфайли
Мне тоже нравится это решение. это просто и хорошо работает.
Корчикс
4

Вместо того, чтобы создавать собственный макет, чтобы получить маленький размер, и если вы хотите использовать внутренний LAYOUT Android для спиннера, вы должны использовать:

"android.R.layout.simple_gallery_item" вместо "android.R.layout.simple_spinner_item".

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

Это может уменьшить размер макета блесны. Это простой трюк.

Если вы хотите уменьшить размер выпадающего списка, используйте это:

madaptor.setDropDownViewResource(android.R.layout.simple_gallery_item);
Хемант Шори
источник
4

Самый простой способ повторно использовать / изменить ресурсы android.R.layout - просто перейти к определению. В Android Studio сделайте Ctrl+ Bна android.R.layout.simple_spinner_item.xml.

Это приведет вас к файлу ресурса. Просто скопируйте файл ресурса и добавьте новый макет в вашу папку Package.R.layout и измените textColor textview, как вам нравится, а затем просто вызовите его в адаптере следующим образом:

ArrayAdapter<String> adapter = new ArrayAdapter<String(Context,R.layout.spinner_item, spinnerlist);
ZygoteInit
источник
4

Для тех, кто хочет изменить DrowDownIconцвет, вы можете использовать вот так

spinner.getBackground().setColorFilter(Color.parseColor("#ffffff"), PorterDuff.Mode.SRC_ATOP);
АМАН СИНГХ
источник
можешь попробовать<item name="android:colorControlNormal" tools:targetApi="lollipop">@color/light_gray</item>
АМАН СИНГ
поместите эту линию в своем стилеAppTheme
AMAN SINGH
Это код, который работалDrawable 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

Можно изменить цвет текста, переопределив метод getView следующим образом:

 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
источник
3

Самый простой: работает для меня

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

spinnerText.setTextColor(Color.RED);
Вакар Ахмед Шуджра
источник
1
spinner.getChildAt (0) возвращает мне нулевое значение: /
Карл Хайнц Бреме Арредондо
2
Я думаю, что этот метод для API 19+.
Жозе Мануэль Абарка Родригес
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"/>

просто используйте это:

ArrayAdapter<String> adapter_category = new ArrayAdapter<String>(this,
    R.layout.spinner_list_item, categories);
adapter_category
    .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Сантош
источник
1

Другим вариантом решения Ашрафа было бы убедиться, что вы учитываете размеры экрана. Вам нужно будет включить спиннер в onCreate и настроить прослушиватель после того, как вы установите адаптер:

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

Затем вы можете начать изменять размер текста в представлении, которое отображается до нажатия на спиннер:

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

    }
};

Все, что вам нужно сделать, это создать определенные папки макета, как это:

Значения-sw360dp

Значения-sw600dp

Значения-sw800dp

Затем добавьте XML-файл с именем "bool.xml" в каждую из этих папок:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="isTablet">false</bool>
    <bool name="isLargeTablet">false</bool>
</resources>
whyoz
источник
1

Сначала мы должны создать простой xmlфайл ресурсов для этого, textviewкак показано ниже:

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

и сохрани это. после установки в вашем списке адаптеров.

Ишор Неупане
источник
1

Вы можете иметь этот тип адаптера для прядильщика, полностью настроенный:

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

тогда как 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" />
черный ястреб
источник
1

Если вам нужен простой метод, для добавления элементов в выпадающий список вы обычно добавляете их в strings.xml. Вот пример того, как добавить цвет с помощью файла strings.xml:

ВЫБЕРИТЕ ВОЗРАСТ

<string-array name="age_array">

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

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

</string-array>
Джейми
источник
милый трюк ... полезный и быстрый для одноразового счетчика, цвет должен быть строкой значения необработанного цвета, а не из xml
me_
0

Я сделал это следующим образом. Я использовал методы getDropDownView () и getView ().

Используйте getDropDownView()для открытого Spinner.

@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;
}

И использовать getView()для закрытого Spinner.

@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;
}
Бхавинкумар Патель
источник
Это правильно протестированный код и работающий в приложении в AppStore
Bhavinkumar Patel
0

Попробуйте этот метод. Это работает для меня.

@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();
}
Тушар Латия
источник
0

просто добавьте новый стиль, как это:

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

и использовать это:

<Spinner
      android:id="@+id/spinnerCategories"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      style="@style/mySpinnerItemStyle"
      android:layout_margin="5dp" />
Элиас Натег
источник
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);

вот и все приятного твоего кодирования ...

mahendren
источник