2014-09-27 7 views
4

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

private void changeColor(int colorId) { 
    ActionBar actionBar = ((ActionBarActivity)getActivity()).getSupportActionBar(); 
    actionBar.setBackgroundDrawable(new ColorDrawable(colorId)); 
    this.getView().setBackgroundColor(getResources().getColor(colorId)); 
} 

У меня есть ActionBar тематического быть синим в моем styles.xml не уверен, если это имеет какой-либо эффект. Если у вас есть какие-либо предложения, пожалуйста, дайте мне знать.

Спасибо, Nathan

Решение: бы изменить:

actionBar.setBackgroundDrawable(new ColorDrawable(colorId)); 

To:

actionBar.setBackgroundDrawable(new ColorDrawable(getResources().getColor(colorId))); 
+0

Что делать, если вы удалите свой синий цвет от styles.xml? – joao2fast4u

+1

Такая же проблема, я также замечаю, что когда я пытаюсь установить цвет фона линейного макета в одной из моих строк списка, я получаю тот же серый цвет. holder.titleLayout.setBackgroundColor (item.getColorCode()); – Nath5

+0

@ Nath5, воздержитесь от ответов на вопросы в комментариях. – Confuse

ответ

8

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

public void setActionBarColor(int parsedColor){ 
    ActionBar mActionBar = getSupportActionBar(); 
    mActionBar.setBackgroundDrawable(new ColorDrawable(parsedColor)); 
    mActionBar.setDisplayShowTitleEnabled(false); 
    mActionBar.setDisplayShowTitleEnabled(true); 
} 

используя это в фрагменте

// check if instance of activity is MyActivity just an example 
MyActivity mA = ((MyActivity)getActivity()); 
mA.setActionBarColor(Color.parseColor("#FFA2C13E")); 

надеюсь, что это помогает :)

PS: им с помощью ActionBarActivity

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