2015-05-09 2 views
5

я есть мероприятия, которые я тематические с моей пользовательской теме, но для блесны я выбрал стиль его с AppCompat v21, но я получил это: enter image description hereИзменение вертушка стрелка, AppCompat v21

Так как изменить стрелку Spinner быть черным или синим, если есть способ?

я нашел, как подобный вопрос, но не имеет никакого ответа: https://stackoverflow.com/questions/28561105/add-custom-spinner-arrow вот моя вертушка:

<Spinner 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/spinner2" 
     android:layout_marginTop="10dp" 
     android:layout_centerInParent="true" /> 

я использовал это стиль вертушку:

<style name="MyTheme.SpinnerAppTheme" parent="Widget.AppCompat.Spinner"> 
    </style> 

это как я использую адаптер

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
       getBaseContext(), R.array.listMedRes, android.R.layout.simple_spinner_item); 

Я просто хочу, чтобы тема spinner, спасибо alot

ответ

8

Поскольку вы используете AppCompat-V21, вы можете воспользоваться преимуществами новых стилей дизайна материал атрибуты:

colorPrimary: ваше приложение брендинга цвет панели приложения, относится к панели действий

colorPrimaryDark: темный вариант для строки состояния и контекстных приложений баров

colorAccent: позволяет определить яркое дополнение к основному цвету брендинга. По умолчанию, это цвет применяется для каркасных элементов управления (с помощью colorControlActivated)

colorControlNormal: цвет наносится на каркасные элементы управления в нормальном состоянии

colorControlActivated: применяется для каркасных элементов управления в их активированная

Вот пример для вас

styles.xml

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <!-- colorPrimary is used for the default action bar background --> 
    <item name="colorPrimary">@color/primary</item> 
    <!-- colorPrimaryDark is used for the status bar --> 
    <item name="colorPrimaryDark">@color/primary_dark</item> 
    <!-- colorAccent is used as the default value for colorControlActivated which is used to tint widgets --> 
    <item name="colorAccent">@color/accent</item> 
    <item name="colorControlNormal">@color/primary</item> 
</style> 

цвета.XML

<resources> 
    <color name="primary">#ff0000ff</color> 
    <color name="primary_dark">#ff0000af</color> 
    <color name="accent">#870000ff</color> 
    <color name="white">#ffffffff</color> 
</resources> 

Вот как это выглядит

enter image description here

Надеется, что это помогает.

+5

это работало с использованием темы appcompat для вся деятельность, это способ использовать его только в прядильщике? –

+0

один элегантный решение там! – Juni

7

Существует способ изменить цвет вашей стрелки ... на самом деле это не цвет, вы можете изменить это изображение с синим цветным изображением .. создать xml-файл myspinner_selector в своем чертеже папка и паста

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item><layer-list> 
     <item><shape> 
       <gradient android:angle="90" android:endColor="#ffffff" android:startColor="#ffffff" android:type="linear" /> 

       <stroke android:width="1dp" android:color="#504a4b" /> 

       <corners android:radius="5dp" /> 

       <padding android:bottom="3dp" android:left="3dp" android:right="3dp" android:top="3dp" /> 
      </shape></item> 
     <item ><bitmap android:gravity="bottom|right" android:src="@drawable/blue_arrow" /> // you can use any other image here, instead of default_holo_dark_am 
     </item> 
     </layer-list></item> 

</selector> 

blue_arrow изображение, и добавить этот стиль в файле стиля

<style name="spinner_style" > 
     <item name="android:background">@drawable/myspinner_selector</item> 
     <item name="android:layout_marginLeft">5dp</item> 
     <item name="android:layout_marginRight">5dp</item> 
     <item name="android:layout_marginBottom">5dp</item> 
     <item name="android:paddingLeft">5dp</item> 
     <item name="android:paddingTop">5dp</item> 
     <item name="android:paddingBottom">5dp</item> 

     </style> 

, наконец, добавить этот стиль в вашем блесны

<Spinner 
     android:id="@+id/spinner1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     style="@style/spinner_style"   

     /> 

это выглядит так. вам нужно настроить enter image description here

1

вы можете покрасить его цветом оттенка атрибута.

<Spinner android:id="@+id/spinner" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:backgroundTint="@color/white" 
/> 
+0

он не будет работать для pre lollipop – HendraWD

25

Возможно, это поздно, но это лучше, чем никогда. Ответ на ваш вопрос: «Это способ использовать его только в spinner?». Ответ: да, см. Код ниже.

Добавить этот код на свою тему или стиль файл

<style name="customSpinnerTheme" parent="yourAppThemeThatUseAppCompat21"> 
    <item name="colorControlNormal">#eaeaea</item> 
    <item name="colorControlActivated">#000000</item> 
    <item name="colorControlHighlight">#000000</item> 
</style> 

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

android:theme="@style/customSpinnerTheme" 

пример:

  <Spinner 
       android:theme="@style/customSpinnerTheme" 
       android:id="@+id/spinner" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="8dp" 
       android:layout_marginRight="8dp" 
       android:spinnerMode="dialog" /> 
+5

in никогда не поздно поделиться знаниями, спасибо, может это поможет другим –

+0

Как установить цвет фона в этом стиле? –

+0

@TylerPfaff ссылается на это решение http://stackoverflow.com/questions/13703233/style-android-spinner – HendraWD

2

взгляда на ниже кода. создать spinner_bg.xml под вытяжкой папки

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item><layer-list> 
      <item><shape> 
        <gradient android:angle="270" android:centerColor="#d0d0d0" android:endColor="#c5c6c6" android:startColor="#dbdadb" android:type="linear" /> 
        <stroke android:width="1dp" android:color="#7a7a7a" /> 
        <corners android:radius="1dp" /> 
        <padding android:left="3dp" android:right="3dp" /> 
       </shape></item> 
      <item><bitmap android:gravity="center|right" android:src="@drawable/dropdown_icon_black" /> 
      </item> 
     </layer-list></item> 
</selector> 

Записывает ниже кода в styles.xml

<style name="spinner_style"> 
     <item name="android:background">@drawable/spinner_bg</item> 
</style> 

Применить стиль Spinner

<Spinner 
    android:id="@+id/spinner" 
    style="@style/spinner_style" 
    android:layout_width="fill_parent" 
    android:layout_height="40dp" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:focusable="true" 
    android:overlapAnchor="false" 
    android:paddingRight="10dp" 
    android:spinnerMode="dropdown" 
    android:textColor="@android:color/white" /> 

использовать это изображение для блесны вытяжки enter image description here

+0

работает как шарм :) –

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