Видаліть значок / логотип із панелі дій на Android


146

Я намагався знайти якийсь спосіб видалення значка / логотипу з панелі дій, але єдине, що я знайшов після години пошуку ТА, документації Android та Google, - як видалити заголовку в цілому. Це не те, що я хочу. Хочете видалити значок / логотип із заголовка.

Хтось знає, як це досягти? Переважно, я хотів би зробити це в XML .


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 hmm Я знаю, про що ви говорите, але я не дослідив рішення для цього, вибачте.
Чарльз Мадере

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>. Ця остання частина була важливою, як і на деяких пристроях (я думаю, що це в основному пост-льодяник) проклятий searchview взяв 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);
Jagdeep Singh

1
Відмінна відповідь ... :)
Байткод

24
Деякі пристрої Samsung відображаються @android:color/transparentяк ЧЕРНІ. Здається, божевільно, але багато виробників пристроїв перекривають налаштування Android за замовчуванням; включаючи кольори. Через це я б створив колір у color.xml так: <color name="transparent">#00000000</color>і посилався на це, а не отримував значення від Android.
Matt W

1
@jose_GD: android: displayOptions - версія v11 і вище, тому обидва вам повинні бути сумісними назад.
Nilzor

115

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

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

45
getActionBar (). setIcon (android.R.color.transparent); здається, достатньо
Хлопчик

метод виклику getActionBar () .... краще вирішити цю проблему (видалити піктограму з панелі дій), тому що якщо ви користуєтеся навігаційною панеллю та панеллю дій, то ваш рядок дій буде вище навігаційної панелі. Якщо ви використовуєте setDisplayShowHomeEnabled (false), то панель навігації буде над панеллю дій, і ви цього не хочете.
horkavlna

Я б змінив це на: ColorDrawable cd = new ColorDrawable(getResources().getColor(android.R.color.transparent)); cd.setBounds(0,0,0,0); getActionBar().setIcon(cd); Без встановлення меж прозорий значок все ще використовує простір
Едіс

1
@Aedis: все ще відображається порожнє місце зліва від панелі дій. будь-які пропозиції?
Роуан

Це добре працює, якщо ви не встановили логотип. У моєму випадку мені довелося використовувати setLogoзамість setIconметоду. Все-таки чудова порада, вивела мене на правильний шлях !!
luiscosta

49

Це працювало для мене

getActionBar().setDisplayShowHomeEnabled(false);

2
Це розміщує панель дій під вкладками / навігаційною панеллю. Мабуть, така поведінка є "дизайнерською" ... code.google.com/p/android/isissue/detail?id=36191
Роджер Кієс

Це ні в якому разі не відповідає на це питання. Я знав про цю функцію, але я просив XML!
Графн

Це здається, що це повинно бути відповіддю - інакше ти застосовуєш глобальне рішення, яке, я сумніваюся, те, що всі хочуть. У моєму випадку я хочу показати логотип на деяких сторінках, але на інших сторінках це не має сенсу і захаращує панель дій.
DiscDev

28

Дзвінок

mActionBar.setDisplayHomeAsUpEnabled(true);

крім того,

mActionBar.setDisplayShowHomeEnabled(false);

приховає логотип, але відображатиме піктограму "Як вгору" :)


Це ні в якому разі не відповідає на це питання. Я знав про цю функцію, але я просив XML!
Графн

@Hrafn - Я вважав, що XML - краща відповідь, а не ТІЛЬКІ відповіді. :( Я думаю, що це все ще допомагає людям. :)
Атул О Холік

15

Майте на увазі, що:

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

Також зробить ваші пункти параметрів прозорими.


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);

Це працювало для мене.


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)));

Це ні в якому разі не відповідає на це питання. Я знав про цю функцію, але я просив XML!
Графн

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

Ласкаво просимо до переповнення стека! Зазвичай відповіді, подібні до ваших, вважаються досить низькою якістю. Для подальшої довідки слід розглянути можливість додавання пояснень щодо наданого вами коду, і вам слід краще структурувати код (додайте 4 пробіли до початку кожного рядка або виберіть його все та натисніть символ {} над текстовим полем.) Також, слід звернути більше уваги на дату запитання (понад рік тому) та на те, що на нього вже відповіли (зелений контрольний знак). Успіхів у програмуванні :)
Христо Валканов

Це ні в якому разі не відповідає на це питання. Я знав про цю функцію, але я просив XML!
Графн

1

Я думаю, що точна відповідь: для api 11 або вище:

getActionBar().setDisplayShowHomeEnabled(false);

інакше:

getSupportActionBar().setDisplayShowHomeEnabled(false);

(тому що йому потрібна бібліотека підтримки.)


Це ні в якому разі не відповідає на це питання. Я знав про цю функцію, але я просив XML!
Графн


0

Відповідь Qiqi Абазіза в порядку, але я все ще довго намагався змусити її працювати з пакетом сумісності та застосовувати стиль до правильних елементів. Крім того, прозорість не потрібна. Ось ось повний приклад роботи для версії 8 та вище:

значення \ 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>

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.