Change ActionBar Background Color in code from Nav

2019-01-23 20:17发布

问题:

I want to change the color of the Action Bar background when the user chooses a selection in the Navigation List.

Currently, my code looks like this:

@Override
    public boolean onNavigationItemSelected(int itemPosition, long itemId) {
        ColorDrawable colorDrawable = new ColorDrawable();
        ActionBar actionBar = getActionBar();
        if(itemPosition == 0)
        {
            colorDrawable.setColor(0xffFEBB31);
            actionBar.setBackgroundDrawable(colorDrawable);
            return true;
        }
        if(itemPosition == 1)
        {
            colorDrawable.setColor(0xff9ACC00);
            actionBar.setBackgroundDrawable(colorDrawable);
            return true;
        }
        return false;
    }

However, the first time I select itemPosition 1 in the Navigation List, it changes the ActionBar color to white.


The second time I click the itemPosition 1 in the Navigation List, I have no issue.


Could anyone tell me why this is and how I can fix the problem? Thank you for the help!

回答1:

Try this:

myActivity.invalidateOptionsMenu();


回答2:

Try using this code:

ColorDrawable colorDrawable = new ColorDrawable(Color.parseColor("#ffFEBB31"));
actionBar.setBackgroundDrawable(colorDrawable); 


回答3:

I was having this same problem.

For Xamarin Users in Visual Studio or the like.

Please paste this just after the SetContentView(Resource.Layou...... in the activity class.

// Setting ActionBar (Toolbar) background color natively var actionBar = this.ActionBar; actionBar.SetBackgroundDrawable(new ColorDrawable(Color.Black));

You may change it as you deem necessary of do more on the actionBar variable.

Thanks hope this helps.