Удалить значок / логотип с панели действий на Android

146

Я пытался найти способ удалить значок / логотип с панели действий, но единственное, что я обнаружил после часа поиска в SO, документации Android и Google, - это как удалить строку заголовка в целом. Это не то, что я хочу. Только хочу удалить значок / логотип из строки заголовка.

Кто-нибудь знает, как это сделать? Предпочтительно я хотел бы сделать это в XML .

Hrafn
источник
1
Вы могли бы просто прочитать руководство по API на панели действий. Это сказано прямо в путеводителе.
Mgamerz
6
Каждый кусок информации где-то можно найти.
Храфн
можете ли вы показать нам, что вы пробовали? что вы нашли ранее, что не работает?
DForck42
@ DForck42 Этот вопрос больше не актуален (почти 4 года). Вы можете найти множество способов достижения этого в ответах ниже.
Храфн

Ответы:

58

Если вы определили android:logo="..."в <application>теге вашегоAndroidManifest.xml , то вам нужно использовать этот материал, чтобы скрыть значок:

тема до v11

<item name="logo">@android:color/transparent</item>

v11 и выше тема

<item name="android:logo">@android:color/transparent</item>

Использование этих двух стилей правильно скрыло для меня значок панели действий на устройствах 2.3 и 4.4 (это приложение использует AppCompat ).

Шарль Мадер
источник
Это работает, но в моем случае, когда у меня есть вид поиска и я щелкаю по нему / раскрываю его, значок / логотип моего приложения появляется снова. Любые идеи?
acrespo
@acrespo хм Я знаю, о чем ты говоришь, но я не нашел решения для этого, извини.
Чарльз Мадер
1
То , что я в конечном итоге делает это установка <application (...) android:logo="@android:color/transparent"> (...)в моей AndroidManifest.xmlи принуждать useLogoк displayOptionsв моем стиле , как это <item name="android:displayOptions">showHome|useLogo|homeAsUp|showTitle</item> <item name="displayOptions">showHome|useLogo|homeAsUp|showTitle</item>. Эта последняя часть была важна, так как в некоторых устройствах (я думаю, в основном после леденца на палочке) проклятый поисковый запрос взял appIcon и поместил его вместо логотипа, даже если логотип был прозрачным: s
acrespo
228

Добавьте следующий код в стили панели действий:

<item name="android:displayOptions">showHome|homeAsUp|showTitle</item>
<item name="displayOptions">showHome|homeAsUp|showTitle</item>
<item name="android:icon">@android:color/transparent</item> <!-- This does the magic! -->

PS: я использую Actionbar Sherlock, и это прекрасно работает.

Цици Абазиз
источник
2
Довольно хороший трюк, спасибо! Он даже перестает занимать место в панели действий!
Игорь Чордаш
6
Спасибо ... он работал в коде также ... actionBar.setIcon (android.R.color.transparent);
Джагдип Сингх
1
Отличный ответ ... :)
Байт-код
24
Некоторые устройства Samsung отображаются @android:color/transparentкак ЧЕРНЫЕ. Кажется сумасшедшим, но многие производители устройств игнорируют настройки Android по умолчанию; в том числе цветов. Из-за этого я хотел бы создать цвет в colors.xml следующим образом: <color name="transparent">#00000000</color>и ссылаться на него вместо получения значения от Android.
Мэтт W
1
@jose_GD: android: displayOptions - только v11 и выше, поэтому вам нужно, чтобы оба были обратно совместимы.
Нильзор
115

Если вы не хотите значок в конкретной деятельности.

getActionBar().setIcon(
   new ColorDrawable(getResources().getColor(android.R.color.transparent)));    
Laksh
источник
45
. getActionBar () SetIcon (android.R.color.transparent); Кажется, достаточно
Мальчик
Вызовите метод getActionBar () .... это лучшее решение этой проблемы (уберите значок с панели действий), потому что если вы используете панель навигации и панель действий, значит, ваша панель действий будет выше панели навигации. Если вы используете setDisplayShowHomeEnabled (false), панель навигации будет находиться над панелью действий, а вы этого не хотите.
Хоркавна
Я бы изменил это на: ColorDrawable cd = new ColorDrawable(getResources().getColor(android.R.color.transparent)); cd.setBounds(0,0,0,0); getActionBar().setIcon(cd); без установки границ прозрачный значок все еще
занимает
1
@Aedis: по-прежнему показывает пустое место слева от панели действий. какие-либо предложения?
Роуэн
Это отлично работает, если вы не установили логотип. В моем случае мне пришлось использовать setLogoвместо setIconметода. Тем не менее, отличный совет, вывели меня на правильный путь !!
Луискоста
49

Это сработало для меня

getActionBar().setDisplayShowHomeEnabled(false);
Брюн
источник
2
Это помещает панель действий под вкладками / панелью навигации. По-видимому, это поведение « нарочно
Роджер Кис
Ни в коем случае это не отвечает на вопрос. Я знал об этой функции, но я просил XML!
Храфн
Похоже, это должен быть ответ - иначе вы применяете глобальное решение, которое, я сомневаюсь, в том, чего хотят все. В моем случае я хочу показать логотип на некоторых страницах, но на других страницах это не имеет смысла и загромождает панель действий.
DiscDev
28

призвание

mActionBar.setDisplayHomeAsUpEnabled(true);

в дополнении к,

mActionBar.setDisplayShowHomeEnabled(false);

будет скрывать логотип, но отображать значок Home As Up. :)

Атул О Холич
источник
Ни в коем случае это не отвечает на вопрос. Я знал об этой функции, но я просил XML!
Храфн
@Hrafn - я думал, что XML был предпочтительным ответом, а не ЕДИНСТВЕННЫМ ответом. :( Я думаю, это все еще помогает людям. :)
Atul O Holic
15

Быть в курсе, что:

<item name="android:icon">@android:color/transparent</item>

Также сделает ваши параметры пунктов прозрачными.

Tevlon
источник
13
    //disable application icon from ActionBar
    getActionBar().setDisplayShowHomeEnabled(false);

    //disable application name from ActionBar
    getActionBar().setDisplayShowTitleEnabled(false);
Павел Меховецкий
источник
Ни в коем случае это не отвечает на вопрос. Я знал об этой функции, но я просил XML!
Храфн
12
getActionBar().setIcon(android.R.color.transparent);

Это сработало для меня.

dn_c
источник
11

Удалить или показать заголовок, используя:

getActionBar().setDisplayShowTitleEnabled(true);

Удалить или показать логотип, используя:

getActionBar().setDisplayUseLogoEnabled(false);

Удалить все:

getActionBar().setDisplayShowHomeEnabled(false);
Тиаго Гувеа
источник
Ни в коем случае это не отвечает на вопрос. Я знал об этой функции, но я просил XML!
Храфн
9

Вы также можете добавить приведенный ниже код в AndroidManifest.xml .

android:icon="@android:color/transparent"

Это будет работать нормально.

Но я обнаружил, что это создает проблему, так как значок запуска также становится прозрачным.

Поэтому я использовал:

getActionBar().setIcon(new ColorDrawable(getResources().getColor(android.R.color.transparent)));

и это работало нормально.

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

Сэм
источник
2

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

        getActionBar().setIcon(
        new ColorDrawable(getResources().getColor(android.R.color.transparent)));
user2900761
источник
Ни в коем случае это не отвечает на вопрос. Я знал об этой функции, но я просил XML!
Храфн
2
getActionBar().setIcon(new ColorDrawable(getResources().getColor(android.R.color.transparent)));
getActionBar().setDisplayHomeAsUpEnabled(true);
user3748515
источник
Добро пожаловать в переполнение стека! Обычно ответы, подобные вашим, считаются довольно низкого качества. Для дальнейшего использования вы должны добавить некоторые пояснения к предоставленному вами коду и лучше структурировать код (добавьте 4 пробела в начале каждой строки или выделите все это и щелкните символ {} над текстовым полем). Также, Вы должны уделять больше внимания дате вопроса (более года назад) и тому факту, что на него уже дан ответ (зеленый флажок). Удачи вам в программировании :)
Христо Валканов
Ни в коем случае это не отвечает на вопрос. Я знал об этой функции, но я просил XML!
Храфн
1

Я думаю, что точный ответ: для API 11 или выше:

getActionBar().setDisplayShowHomeEnabled(false);

в противном случае:

getSupportActionBar().setDisplayShowHomeEnabled(false);

(потому что это нуждается в поддержке библиотеки.)

Дэвид
источник
Ни в коем случае это не отвечает на вопрос. Я знал об этой функции, но я просил XML!
Храфн
1

зайдите в свой манифест и найдите тег приложения

  android:icon="@android:color/transparent"// simply add this on place of your icon

..... ... ...

Авинаш Аджай Пандей
источник
0

Ответ Qiqi Abaziz в порядке, но я все еще долго пытался заставить его работать с пакетом совместимости и применять стиль к нужным элементам. Кроме того, взлом прозрачности не нужен. Итак, вот полный пример работы для v8 и выше:

значения \ styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MyActivityTheme" parent="@style/Theme.AppCompat">
        <item name="actionBarStyle">@style/NoLogoActionBar</item> <!-- pre-v11-compatibility -->
        <item name="android:actionBarStyle">@style/NoLogoActionBar</item>
    </style>
    <style name="NoLogoActionBar" parent="@style/Widget.AppCompat.ActionBar">
        <item name="displayOptions">showHome</item> <!-- pre-v11-compatibility -->
        <item name="android:displayOptions">showHome</item>
    </style>
</resources>

AndroidManifest.xml (оболочка)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">   
    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19"/>
    <application android:theme="@android:style/Theme.Light.NoTitleBar">
        <activity android:theme="@style/PentActivityTheme"/>
    </application>
</manifest>
Nilzor
источник
0

Зайдите в манифест и найдите свою деятельность, затем добавьте этот код:

android:theme="@android:style/Theme.NoTitleBar"

выше линии скрыть Actionbar.

Если вам нужна другая функция, вы можете увидеть другие опции с помощью (CLR + SPC).

А.А.
источник
0

Самый быстрый способ - это изменить ваш Manifest.xml. Например, если вы хотите удалить логотип действия «Активность» и оставить логотип в других действиях, вы можете сделать следующее:

<activity
      android:name=".home.XActivity"
      android:logo="@android:color/transparent"
      android:configChanges="orientation|keyboardHidden" />
 <activity
      android:name=".home.HomeActivity"
      android:configChanges="orientation|keyboardHidden" />
Джорди Алонсо
источник
0

Ничто из вышеперечисленного не сработало.

Но это добилось цели:

override fun onCreate() {
    setContentView(R.layout.activity_main)

    setSupportActionBar(toolbar)
    toolbar.logo = null

(убран значок с панели инструментов)

Дэн Алботяну
источник