it-swarm.com.ru

Изменение значка панели действий

В настоящее время я реализую поддержку тем для своего приложения, и частично меняю значок приложения на панели действий. Я хочу использовать темный значок, когда выбран Holo Light. Все делается в методе, кроме той части, где установлен значок приложения на панели действий. Код, который я пытаюсь использовать:

getActionBar();
ActionBar.setIcon(R.drawable.my_icon);

"Здесь нет такой ссылки" - ошибка, которую я получаю. Как это должно быть сделано правильно?

Кстати, моя minSdkVersion - 14, так что никаких вещей из бара действий нет.

7
SweSnow
getActionBar();

Ты тут же выбрасываешь панель действий. getActionBar() возвращает экземпляр ActionBar, который вам затем нужно вызвать setIcon(). Вот так:

ActionBar actionBar = getActionBar();
actionBar.setIcon(R.drawable.my_icon);
19
kcoppock

Хотя это немного поздно, но я подумал, что это может быть полезно.

Изнутри действия: Для уровня API 14 или выше:

getActionBar().setIcon(R.drawable.my_icon);

Для более низкого уровня API мы должны расширить ActionBarActivity, а затем:

getSupportActionBar().setIcon(R.drawable.my_icon);

Внутри фрагмента: Для API уровня 14 или выше:

getActivity().getActionBar().setIcon(R.drawable.my_icon);

Для более низкого уровня API мы можем использовать (действие должно расширять ActionBarActivity):

((ActionBarActivity)getActivity()).getSupportActionBar().setIcon(R.drawable.my_icon);

И в обоих случаях мы должны вызвать setDisplayShowHomeEnabled (true) перед установкой иконки или логотипа.

((ActionBarActivity)getActivity()).getSupportActionBar().setDisplayShowHomeEnabled(true);

((ActionBarActivity)getActivity()).getSupportActionBar().setIcon(R.drawable.my_icon);
5
Reaz Murshed

Мне не хватило звонить на setIcon.

Перед этим мне пришлось переключить отображение с логотипа активности на значок активности:

actionBar.setDisplayUseLogoEnabled(false);

Различия между значком активности и логотипом см. В разделе значок Android и логотип .

0
Eran Friedman

Вам нужно добавить чертеж, на который вы хотите сослаться, в папку drawable/ в res/.

edit: в вашей установочной папке Android есть много готовых изображений. Вы можете найти это там.

0
trevor-e

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

actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeAsUpIndicator(R.drawable.icon);
0
Sagar Thakarar

Существующий ответ очень правильный. Однако есть и альтернатива. Минимальный подход будет использовать

getActionBar().setIcon(R.drawable.my_icon);

Выполняет вашу работу прямо сейчас. :)

Технические подробности: Так как getActionBar () по умолчанию возвращает объект, вы можете напрямую манипулировать им без необходимости явного получения его в объекте в области видимости.

0
Sankalp Sharma

Попробуй это

    setSupportActionBar(toolbar);
    if (getSupportActionBar() != null)
    getSupportActionBar().setIcon(R.drawable.your_icon);
0
Mohammed Javad