26

Как я писал в своем вопросе, я хочу изменить цвет стрелки вниз (стрелка по умолчанию, а не пользовательская стрелка или что-то в этом роде) Spinnerв XML, но проблема в том, что я не мог найти ничего, чтобы ссылаться на него с XML.Изменить цвет стрелки вниз Spinner в XML

Возможно ли это? Если да, как я могу изменить цвет?

Заранее спасибо.

+0

взглянуть на ответ [здесь] (HTTP: // StackOverflow.com/questions/25911287/change-color-of-small-triangle-on-spinner-in-android) – derfect

+0

@Rayes Но это для выпадающего меню, а не по умолчанию. –

+1

@ Error404 Спустя 3 месяца я столкнулся с той же проблемой. ваш принятый ответ помог мне решить проблему. 1 голос для вас 1 для Hussein :) –

ответ

67

Существует три способа достижения этого.

1. Через код:

В вашем XML, убедитесь, что счетчик имеет идентификатор. Допустим, у нас есть счетчик с идентификатором «spinner».

В своем коде, добавьте следующую строку в вашем OnCreate():

Spinner spinner = (Spinner) findViewById(R.id.spinner); 
spinner.getBackground().setColorFilter(getResources().getColor(R.color.red), PorterDuff.Mode.SRC_ATOP); 

, где красный цвет ваш определенный в colors.xml в папке значений.

2. С помощью XML:

Для API 21+:

<Spinner 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:backgroundTint="@color/red" /> 

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

<android.support.v7.widget.AppCompatSpinner 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    app:backgroundTint="@color/red" /> 

3. Через чертежи:

Вы можете использовать этот онлайн-инструмент: http://android-holo-colors.com

Это создаст пользовательские чертежи для любого вида с желаемым цветом. Убедитесь, что вы выбрали spinner, а затем загрузите ресурсы.

+0

У меня нет файла colors.xml. Или я должен создать его? Также я хочу указать, что в моем вопросе, когда я говорю ** по XML **, я имею в виду, если есть какой-то параметр, например 'android: colorDropDownArrow' или что-то в этом роде, чтобы установить значение arrrow непосредственно в XML. Благодаря! –

+0

К сожалению, вы не можете сделать это из своего xml, за исключением использования ** android: background = "@ drawable/spinnerBackground" **, но это полностью изменит фон вашего счетчика. Поэтому вам нужно создать новый xml в папке с вашими значениями ** colors.xml ** и добавить цвет, который называется red. Также проверьте мой обновленный ответ, я поставил другой путь вместо создания ** colors.xml **, если вы этого хотите. –

+0

Благодарим за обновление! Но у меня все еще есть сомнения. Стрелка отображается только с цветом, если у меня нет фона для Spinner, но если я создаю фон, стрелка исчезает. Вы знаете, почему это так? –

11

Я удивлен, что никто не указал на это, но вы можете просто подкласс Widget.AppCompat.Spinner и изменить backgroundTint

<style name="Spinner" parent="Widget.AppCompat.Spinner"> 
     <item name="backgroundTint">@color/spinnerTint</item> 
</style> 

и применить его к Spinner

<Spinner 
    style="@style/Spinner" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:spinnerMode="dropdown" /> 
+2

Не является ли свойство backgroundTint применимым только к уровню API 21? –

+1

@niranjan_b 'android: backgroundTint' есть. Это версия AppCompat (обратите внимание, что здесь нет префикса android, и стиль расширяет производный стиль AppCompat) – mewa

+0

Хорошо, .. получилось .. –

2

попробовать это:

spinner_age.getBackground().setColorFilter(ContextCompat.getColor(this, 
       R.color.spinner_icon), PorterDuff.Mode.SRC_ATOP); 
+0

он изменил цвет фона, а не цвет стрелки – Zvi

0
<Spinner 
      android:id="@+id/spinner" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:backgroudTint="#00000" /> 
7

использование backgroundTint атрибут

<Spinner 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:backgroundTint="@color/white" 
     /> 

если min_SDK < 21 (Lollipop), вы должны использовать AppCompatSpinner

<android.support.v7.widget.AppCompatSpinner 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:backgroundTint="@color/white" 
     /> 

 Смежные вопросы

  • Нет связанных вопросов^_^