2015-04-16 6 views
1

Я пытаюсь изменить цвет фона панели действий Android во время выполнения, в соответствии с изображением VibrantColor.Изменить цвет фона панели действий Android во время выполнения

Я нашел несколько ссылок, но не работал для меня.

Change action bar color in android

How do I change the background color of the ActionBar of an ActionBarActivity using XML?

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

public int getImageColor(Bitmap foto) { 
    Palette palette = Palette.generate(foto); 

    List<Palette.Swatch> swatchList = palette.getSwatches(); 

    int maiorPopulação = 0; 

    int color = 0; 

    for (Palette.Swatch sw : swatchList){ 
     if (sw.getPopulation() > maiorPopulação) { 
      maiorPopulação = sw.getPopulation(); 
      color = sw.getRgb(); 
     } 
    } 

    return palette.getVibrantColor(color); 
} 

Тогда я пытаюсь установить возвращенный цвет в ActionBar:

public static void alteraCor(Fragment fragmento, int color) { 
    ActionBarActivity atividade = (ActionBarActivity)fragmento.getActivity(); 

    android.support.v7.app.ActionBar actionBar = atividade.getSupportActionBar(); 

    if (fragmento instanceof Detalhes) 
     actionBar.setBackgroundDrawable(new ColorDrawable(Color.rgb(
       Color.red(color), 
       Color.green(color), 
       Color.blue(color) 
      ))); 
     else 
      actionBar.setBackgroundDrawable(new ColorDrawable(fragmento.getResources().getColor(R.color.fundoEscuro))); 
    } 

Я назвал alteraCor от onCreate и от onAttach на фрагменте, но ни один из них работал.

EDIT:

Я использую на следующие Стиль:

<style name="VendasFacil" parent="@style/Theme.AppCompat"> 
     <item name="android:textColor">@color/Fonte</item> 
     <item name="android:background">@color/fundoPrimeiroPlano</item> 
     <item name="android:windowBackground">@color/fundoPrimeiroPlano</item> 
     <item name="actionBarTheme">@style/VendasFacil.ActionBar</item> 
     <item name="android:actionBarTheme" tools:ignore="NewApi">@style/VendasFacil.ActionBar</item> 
    </style> 

    <style name="VendasFacil.ActionBar" parent="@style/Widget.AppCompat.ActionBar"> 
     <item name="android:background">@color/fundoEscuro</item> 
     <item name="android:displayOptions">showHome|homeAsUp|showTitle</item> 
     <item name="displayOptions">showHome|homeAsUp|showTitle</item> 
     <item name="android:homeAsUpIndicator">@drawable/ic_launcher</item> 
     <item name="homeAsUpIndicator">@drawable/ic_drawer</item> 
    </style> 

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

ответ

0

Для этого вам необходимо создать стиль. Затем вы можете изменить стиль во время выполнения, чтобы панель действий отражала его.

Это может быть полезно: http://developer.android.com/guide/topics/ui/actionbar.html#AdvancedStyles

Вот пример стиля, изменяя цвет ActionBar:

<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar"> 
     <item name="android:background">ANY_HEX_COLOR_CODE</item> 
</style> 
+0

Я уже использую стили ... Я отредактировал мой вопрос, чтобы отразить его –

+0

я не цвет я хочу использовать ранее, чтобы поместить его в файл стилей. Это как если бы цвет был определен пользователем во время выполнения. –

0

Вы можете использовать Android Action Bar Style Generator. Он генерирует файлы XML. Скопируйте в свой проект. Это легко и приятно.

+0

У меня нет цвета, который я хочу использовать в качестве фона ранее, чтобы поместить его в файл стиля. Это как если бы цвет был определен пользователем во время выполнения. –

+0

Генератор стилей Action Bar устарел с новым AppCompat –

0

Эй там, кажется, небольшая ошибка в коде:

actionBar.setBackgroundDrawable(new ColorDrawable(Color.rgb(
     Color.red(color), 
     Color.green(color), 
     Color.blue(color) 
    ))); 

Вы устанавливаете г G- и значение б в шестнадцатеричное значение цвета. Что вам нужно сделать, вместо того, чтобы просто:

actionBar.setBackgroundDrawable(new ColorDrawable(color)); 
+0

не работает ни –

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