Usuń ikonę / logo z paska akcji na Androidzie


146

Próbowałem znaleźć jakiś sposób na usunięcie ikony / logo z paska akcji, ale jedyne, co znalazłem po godzinie przeszukiwania SO, dokumentacji Androida i Google, to sposób całkowitego usunięcia paska tytułu. Nie tego chcę. Chcę tylko usunąć ikonę / logo z paska tytułu.

Czy ktoś wie, jak to osiągnąć? Najlepiej, gdybym to zrobił w XML .


1
Mogłeś po prostu przeczytać przewodnik po API na pasku akcji. Mówi to bezpośrednio w przewodniku.
Mgamerz

6
Każda informacja jest gdzieś do znalezienia.
Hrafn

czy możesz nam pokazać, czego próbowałeś? co znalazłeś wcześniej, co nie działa?
DForck42

@ DForck42 To pytanie nie jest już istotne (prawie 4 lata). W poniższych odpowiedziach można znaleźć wiele sposobów osiągnięcia tego celu.
Hrafn

Odpowiedzi:


58

Jeśli zdefiniowałeś android:logo="..."w swoim <application>tagu AndroidManifest.xml, musisz użyć tych rzeczy, aby ukryć ikonę:

motyw pre-v11

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

v11 i nowsze motywy

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

Użycie tych dwóch stylów odpowiednio ukryło ikonę paska akcji na urządzeniu 2.3 i 4.4 (ta aplikacja używa AppCompat ).


To działa, ale w moim przypadku, gdy mam widok wyszukiwania i klikam go / rozwijam, ikona / logo mojej aplikacji pojawia się ponownie. Jakieś pomysły?
acrespo

@acrespo hmm Wiem, o czym mówisz, ale przepraszam, nie szukałem rozwiązania tego problemu.
Charles Madere

1
Skończyło się na tym, <application (...) android:logo="@android:color/transparent"> (...)że AndroidManifest.xmlsiedziałem w moim stylu i zmuszałem useLogodo displayOptionstego <item name="android:displayOptions">showHome|useLogo|homeAsUp|showTitle</item> <item name="displayOptions">showHome|useLogo|homeAsUp|showTitle</item>. Ta ostatnia część była ważna, ponieważ w niektórych urządzeniach (myślę, że głównie post-lollipop) cholerny widok wyszukiwania wziął appIcon i umieścił go w miejscu logo, nawet jeśli logo było ustawione jako przezroczyste: s
acrespo

228

Dodaj następujący kod do stylów paska akcji:

<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: Używam Actionbar Sherlocka i to działa dobrze.


2
Całkiem niezła sztuczka, dzięki! Przestaje nawet zajmować miejsce na pasku akcji!
Igor Čordaš

6
Dzięki ... działał również w kodzie ... actionBar.setIcon (android.R.color.transparent);
Jagdeep Singh

1
Doskonała odpowiedź ... :)
Bytecode

24
Niektóre urządzenia Samsung są wyświetlane @android:color/transparentjako CZARNE. Wydaje się szalone, ale wielu producentów urządzeń zastępuje domyślne ustawienia Androida; w tym kolory. Z tego powodu utworzyłbym kolor w colors.xml w ten sposób: <color name="transparent">#00000000</color>i użyłbym odniesienia do tego zamiast pobierania wartości z Androida.
Matt W,

1
@jose_GD: android: displayOptions jest dostępny tylko w wersji 11 i nowszych, więc oba muszą być kompatybilne wstecz.
Nilzor

115

Jeśli nie chcesz, aby ikona w określonej czynności.

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

45
getActionBar (). setIcon (android.R.color.transparent); wydaje się wystarczająca
Boy

call method getActionBar () .... jest lepszym rozwiązaniem tego problemu (usuń ikonę z paska akcji), ponieważ jeśli używasz paska nawigacji i paska akcji, pasek akcji będzie znajdował się powyżej paska nawigacji. Jeśli używasz setDisplayShowHomeEnabled (false), pasek nawigacji będzie nad paskiem akcji, a tego nie chcesz.
horkavlna

ColorDrawable cd = new ColorDrawable(getResources().getColor(android.R.color.transparent)); cd.setBounds(0,0,0,0); getActionBar().setIcon(cd);
Zmieniłbym

1
@ Aedis: nadal pokazuje puste miejsce po lewej stronie paska akcji. jakieś sugestie?
Rowan

Działa to dobrze, jeśli nie ustawiłeś logo. W moim przypadku musiałem użyć setLogozamiast setIconmetody. Mimo to świetna wskazówka, zaprowadziła mnie na właściwą ścieżkę !!
luiscosta

49

To zadziałało dla mnie

getActionBar().setDisplayShowHomeEnabled(false);

2
Spowoduje to umieszczenie paska akcji pod zakładkami / paskiem nawigacji. Najwyraźniej to zachowanie jest „ zgodne z
Roger Keays

W każdym razie to nie odpowiada na pytanie. Wiedziałem o tej funkcji, ale prosiłem o XML!
Hrafn

Wydaje się, że to powinna być odpowiedź - w przeciwnym razie stosujesz globalne rozwiązanie, które wątpię, aby wszyscy chcieli. W moim przypadku chcę pokazać logo na niektórych stronach, ale na innych stronach nie ma to sensu i zaśmieca pasek akcji.
DiscDev,

28

Powołanie

mActionBar.setDisplayHomeAsUpEnabled(true);

oprócz,

mActionBar.setDisplayShowHomeEnabled(false);

ukryje logo, ale wyświetli ikonę Home As Up. :)


W każdym razie to nie odpowiada na pytanie. Wiedziałem o tej funkcji, ale prosiłem o XML!
Hrafn

@Hrafn - Myślałem, że XML jest preferowaną odpowiedzią, a nie JEDYNĄ odpowiedzią. :( Myślę, że nadal pomaga ludziom. :)
Atul O Holic

15

Miej świadomość, że:

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

Sprawi również, że elementy opcji będą przezroczyste.


13
    //disable application icon from ActionBar
    getActionBar().setDisplayShowHomeEnabled(false);

    //disable application name from ActionBar
    getActionBar().setDisplayShowTitleEnabled(false);

W każdym razie to nie odpowiada na pytanie. Wiedziałem o tej funkcji, ale prosiłem o XML!
Hrafn

12
getActionBar().setIcon(android.R.color.transparent);

To zadziałało dla mnie.


11

Usuń lub pokaż tytuł za pomocą:

getActionBar().setDisplayShowTitleEnabled(true);

Usuń lub pokaż logo za pomocą:

getActionBar().setDisplayUseLogoEnabled(false);

Usuń wszystko:

getActionBar().setDisplayShowHomeEnabled(false);

W każdym razie to nie odpowiada na pytanie. Wiedziałem o tej funkcji, ale prosiłem o XML!
Hrafn

9

możesz również dodać poniższy kod w AndroidManifest.xml .

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

Będzie działać dobrze.

Ale odkryłem, że powoduje to problem, ponieważ ikona programu uruchamiającego również staje się przezroczysta.

Więc użyłem:

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

i działało dobrze.

Ale jeśli masz więcej niż jedno działanie i chcesz, aby ikona działania była przezroczysta, to poprzednie podejście zadziała.


2

Użyłem tego i zadziałało dla mnie.

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

W każdym razie to nie odpowiada na pytanie. Wiedziałem o tej funkcji, ale prosiłem o XML!
Hrafn

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

Witamy w przepełnieniu stosu! Zwykle odpowiedzi podobne do Twojej są raczej niskiej jakości. W przyszłości należy rozważyć dodanie kilku wyjaśnień na temat podanego kodu i lepszą strukturę kodu (dodać 4 spacje na początku każdego wiersza lub zaznaczyć wszystko i kliknąć symbol {} nad polem tekstowym). Ponadto, należy zwrócić większą uwagę na datę pytania (ponad rok temu) oraz fakt, że zostało już udzielone (zielony haczyk). Powodzenia w programowaniu :)
Hristo Valkanov

W każdym razie to nie odpowiada na pytanie. Wiedziałem o tej funkcji, ale prosiłem o XML!
Hrafn

1

Myślę, że dokładna odpowiedź brzmi: dla interfejsu API 11 lub nowszego:

getActionBar().setDisplayShowHomeEnabled(false);

Inaczej:

getSupportActionBar().setDisplayShowHomeEnabled(false);

(ponieważ potrzebuje biblioteki wsparcia).


W każdym razie to nie odpowiada na pytanie. Wiedziałem o tej funkcji, ale prosiłem o XML!
Hrafn

1

przejdź do swojego manifestu i znajdź tag aplikacji

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

..... ... ...


0

Odpowiedź Qiqi Abaziza jest w porządku, ale nadal długo walczyłem, aby działał z pakietem kompatybilności i zastosował styl do odpowiednich elementów. Również hack do przezroczystości jest niepotrzebny. Oto kompletny przykład działający dla wersji 8 i nowszych:

wartości \ 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 (powłoka)

<?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

Przejdź do swojego manifestu i znajdź swoją aktywność, a następnie dodaj ten kod:

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

powyżej linii ukryj swoje Actionbar.

Jeśli potrzebujesz innej funkcji, możesz zobaczyć inne opcje za pomocą (CLR + SPC).


0

Najszybszym sposobem jest zmodyfikowanie pliku Manifest.xml. Jeśli np. Chcesz usunąć logo działania „Aktywność” i pozostawić logo w innych działaniach, możesz wykonać następujące czynności:

<activity
      android:name=".home.XActivity"
      android:logo="@android:color/transparent"
      android:configChanges="orientation|keyboardHidden" />
 <activity
      android:name=".home.HomeActivity"
      android:configChanges="orientation|keyboardHidden" />

0

Żadne z powyższych nie działało.

Ale to załatwiło sprawę:

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

    setSupportActionBar(toolbar)
    toolbar.logo = null

(ikona usunięta z paska narzędzi)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.