Intereting Posts
Сколько видов деятельности я должен использовать? Можно ли использовать AsyncTask в классе Service? % 3F вместо знака вопроса в моем обновленном URL-адресе Основной класс активности не найден, если реализует GooglePlayServicesClient.ConnectionCallbacks / OnConnectionFailedListener Преобразование файла (<100Mo) в Base64 на Android Несколько файлов dex определяют Lcom / google / firebase / FirebaseException Переместить логотип Google в MapView Как добавить параметры в сообщение для android http? Изменение позиции просмотра после окончания анимации Как добавить разделительные линии между моими таблицами, которые создаются программно? Импорт файла ant build.xml в Eclipse Push-уведомления на всех трех платформах (Android, iOS, Windows Phone) Пример SSO в Facebook не работает – «Произошла ошибка. Пожалуйста, повторите попытку позже" Android: Как заполнить RelativeLayout до полной ширины экрана? Телефонные звонки уменьшают размер изображения

Android: Где скрывается атрибут цвета текста виджета Spinner?

Я пытаюсь изменить цвет текста отдельного элемента, который отображается в кнопке spinner после выбора элемента из раскрывающегося списка. Я просматривал темы .xml и styles.xml в Android SDK в течение часа, и я не могу найти, где Spinner получает значение цвета.

Чтобы уточнить, я НЕ пытаюсь изменить цвет выпадающего элемента, я пытаюсь изменить цвет отображаемого текста счетчика, когда нет выпадающего списка. Думаю, вы могли бы называть это «кнопкой» прядильщика.

Solutions Collecting From Web of "Android: Где скрывается атрибут цвета текста виджета Spinner?"

Я думаю, что это, наверное, этот бит в styles.xml

<style name="Widget.TextView.SpinnerItem"> <item name="android:textAppearance">@style/TextAppearance.Widget.TextView.SpinnerItem</item> </style> <style name="Widget.DropDownItem.Spinner"> <item name="android:checkMark">?android:attr/listChoiceIndicatorSingle</item> </style> 

– = EDIT = – Вот результат: Введите описание изображения здесь

И вот как это делается:

 <?xml version="1.0" encoding="utf-8"?> <resources> <style name="MooTheme" parent="android:Theme"> <item name="android:spinnerItemStyle">@style/MooSpinnerItem</item> </style> <style name="MooSpinnerItem" parent="android:Widget.TextView.SpinnerItem"> <item name="android:textAppearance">@style/MooTextAppearanceSpinnerItem</item> </style> <style name="MooTextAppearanceSpinnerItem" parent="android:TextAppearance.Widget.TextView.SpinnerItem"> <item name="android:textColor">#F00</item> </style> </resources> 

Затем просто добавьте это в тег приложения в AndroidManifest.xml

 android:theme="@style/MooTheme" 

Да КейсиБ правильно.

Вот как я установил цвет текста прядильщика, немного простой пример:

styles.xml

  <style name="Theme.NoTitleBar.WithColoredSpinners" parent="@android:style/Theme.NoTitleBar"> <item name="android:spinnerItemStyle">@style/SpinnerItem</item> <item name="android:spinnerDropDownItemStyle">@style/SpinnerItem.DropDownItem</item> </style> <style name="SpinnerItem" parent="@android:style/Widget.TextView.SpinnerItem"> <item name="android:textColor">#00FF00</item> </style> <style name="SpinnerItem.DropDownItem" parent="@android:style/Widget.DropDownItem.Spinner"> <item name="android:textColor">#FF0000</item> </style> </resources> 

Тогда в вашем манифесте:

 <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/Theme.NoTitleBar.WithColoredSpinners" > 

Текст снаружи всех ваших прядильщиков теперь будет зеленым, а текст в выпадающих меню будет красным.

Я сделал это, используя другую простую технику,

Скопируйте файл simple_spinner_item.xml и simple_spinner_dropdown_item.xml из папки res / layout Android и скопируйте их в свой проект.

Затем измените следующие строки

 ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.planets_array, Android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item); spinnerSubject.setAdapter(adapter); 

в виде:

 ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.planets_array, R.layout.simple_spinner_item); adapter.setDropDownViewResource(R.layout.simple_spinner_dropdown_item); spinnerSubject.setAdapter(adapter); 

Остальное легко, теперь вы можете отредактировать файл simple_spinner_item.xml, чтобы отредактировать видимость одного видимого элемента виджета spinner и отредактировать файл simple_spinner_dropdown_item.xml, чтобы изменить внешний вид выпадающего списка.

Например, мой макет активности содержит:

 <Spinner android:id="@+id/mo_spinnerSubject" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:background="@drawable/spinnerset_background" /> 

И мой simple_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:singleLine="true" android:textColor="@color/custom_white" android:textSize="16sp" /> 

И simple_spinner_dropdown_item.xml выглядит так:

 <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" style="?android:attr/spinnerDropDownItemStyle" android:layout_width="match_parent" android:layout_height="?android:attr/listPreferredItemHeight" android:background="@color/custom_black" android:ellipsize="marquee" android:singleLine="true" android:textColor="@color/custom_white" /> 

Вы можете использовать setOnItemSelectedListener на объекте Spinner,

 spinnerObject.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { ((TextView)parentView.getChildAt(0)).setTextColor(Color.rgb(249, 249, 249)); // OR ((TextView)parentView.getChildAt(0)).setTextColor(Color.RED); } }); 

Это очень просто. Я искал по всему вам просто нужно создать стиль и установить на spinner

Сначала создайте свою тему в Style.xml

  <style name="spinnerTheme" parent="android:Theme"> <item name="android:textColor">@color/gray_dark</item> </style> 

То в вашем xml, где вы установили свой счетчик, добавьте следующее:

Android: theme = "@ style / spinnerTheme "

  <Spinner android:id="@+id/spinner" android:layout_width="match_parent" android:layout_height="50dp" android:padding="10dp" android:paddingBottom="5dp" android:paddingLeft="10dp" android:layout_span="3" android:layout_weight="1.3" android:theme="@style/spinnerTheme" android:textSize="12sp" android:spinnerMode="dialog" android:clickable="false"/> 

Наслаждайтесь кодированием

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

Это будет включать изменение метода ondraw (), и вы нарисуете spinner, как бы вы хотели, чтобы он выглядел.

Единственное, что, я думаю, потенциально может решить эту проблему, – это свойство стиля spinner.

Источник: http://developer.android.com/reference/android/widget/Spinner.html

Это может помочь:

http://www.designerandroid.com/?p=28

Это сработало для меня, чтобы создать собственный файл макета с пользовательским определением для элемента spinner.

 custom_spinner.xml: <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/txt_spinner" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="16sp" android:textColor="#ffffff" /> 

Измените элемент счетчика с помощью адаптера

 Spinner spinner= (Spinner) findViewById(R.id.spinner1); ArrayAdapter adapter = ArrayAdapter.createFromResource(this,R.array.by_loc_array,R.layout.txt_spinner); spinner.setAdapter(adapter);