Изменить логотип, который появляется в Android ActionBar программно - PullRequest
5 голосов
/ 23 ноября 2011

Есть ли способ изменить логотип, который появляется в ActionBar внутри Activity вместо перечисления его в Манифесте?

Причина, по которой я спрашиваю, состоит в том, что у меня есть приложение для телефонов, где я строю панель аналогичного типа сверху с пиктограммой запуска в левом углу, аналогично ActionBar с использованием ImageView.

Я также разрешаю пользователю изменить это изображение на своем телефоне или в Интернете.В настоящее время я работаю над приложением для планшетов и хотел бы просто использовать ActionBar, но не могу понять, как изменить изображение в зависимости от пользователя.В классе ActionBar нет метода, и я не смог найти способ изменить значок или логотип из ресурсов.

Кто-нибудь знает, возможно ли это, или может предложить что-то, что я мог бы попробовать?

Ответы [ 2 ]

12 голосов
/ 26 июля 2012

До введения в API 14 методов setIcon и setLogo, о которых упоминал Джейк, вы, по-видимому, могли изменить логотип ActionBar, захватив вид android.R.id.home и установив новый объект рисования.

ImageView logo = (ImageView) findViewById(android.R.id.home);
logo.setImageDrawable(drawable);
10 голосов
/ 23 ноября 2011

API 14 введены setIcon и setLogo методы.

Что касается 11–13, то нет простого пути.

Возможно, вы сможете использовать пользовательскую навигацию и скрыть обычный значок / логотип, имея собственный макет, имитирующий его функциональность.

В стиле панели действий есть атрибут homeLayout, который позволяет указывать альтернативный ресурс макета, который будет использоваться, но он всегда будет выдавать ClassCastException, поскольку он мгновенно приводится во внутренний класс при инфляции (ошибка ) # 21842 ).

...