Установить фон Drawable для панели действий не работает с цветом в colors.xml

У меня есть следующий код в моем фрагменте:

 getActionBar().setBackgroundDrawable(new ColorDrawable(Color.Black));

когда я нажимаю на кнопку в моем фрагменте, он вызывает этот код. Я устанавливаю панель действий на черный. Однако, если я изменю цвет на R.color.primaryColor он продолжает устанавливать панель действий на средний серый цвет. Это так странно, хотя. Если я установлю его на R.color.primaryColorDarkэто дает мне тот же серый цвет.

Я использую панель действий поддержки, которая на самом деле является панелью инструментов.

Я что-то упускаю здесь очевидное?

[РЕДАКТИРОВАТЬ]

Хорошо, я обнаружил, что я использовал цвета Android Color.BLUE он работает нормально, он дает мне серый цвет, когда я использую R.colors.mycustomcolor

вот мой colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="primaryColor">#2196F3</color>
    <color name="primaryColorDark">#1976D2</color>
    <color name="accentColor">#1976D6</color>
</resources>

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

У меня есть только один color.xml, поэтому он не принимает неправильный цвет для другого типа макета.

2 ответа

Я нашел, что сделать это!

Вот код:

public override void OnAttach(Activity activity) {
    base.OnAttach(activity);
    var colorDrawable = new ColorDrawable(Color.White);
    activity.ActionBar.SetBackgroundDrawable(colorDrawable);

   var titleId = activity.Resources.GetIdentifier("action_bar_title", "id","android");
    var abTitle = activity.FindViewById<TextView>(titleId);
    abTitle.SetTextColor(Color.Black);

  }

ИЛИ здесь еще один

не доступно Fragment, ActionBar представление обычно обрабатывается путем переопределения:

public override void OnCreateOptionsMenu(IMenu menu, MenuInflater inflater)

метод обратного вызова; убедившись, что вы позвонили SetHasOptionsMenu(true); в OnCreate(),

Вполне возможно, что вы получаете это NullReferenceException так как OnCreateView() вызывается до ActionBar макет был раздут.

Как правило, так будет выглядеть метод:

public override void OnCreateOptionsMenu(IMenu menu, MenuInflater inflater) {
    //Stops the menu being reinflated on configuration changes
    if(!menu.HasVisibleItems) 
        inflater.Inflate(Resource.Menu.MenuLayout, menu);

    var myMenuItem = menu.FindItem(Resource.Id.MyMenuItem);
    //Do stuff with your menu items
}

Попробуйте это и это должно работать

    actionBar.setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.primaryColor)));
Другие вопросы по тегам