Entfernen Sie das Symbol / Logo von der Aktionsleiste auf Android

146

Ich habe versucht, eine Möglichkeit zu finden, das Symbol / Logo aus der Aktionsleiste zu entfernen, aber das einzige, was ich nach einer Stunde der Suche in SO, der Android-Dokumentation und Google gefunden habe, ist, wie die Titelleiste vollständig entfernt wird. Das will ich nicht. Ich möchte nur das Symbol / Logo aus der Titelleiste entfernen.

Weiß jemand, wie man das erreicht? Am liebsten möchte ich dies in XML tun .

Hrafn
quelle
1
Sie hätten einfach die API-Anleitung in der Aktionsleiste lesen können. Es steht direkt in der Anleitung.
Mgamerz
6
Jede Information ist irgendwo zu finden.
Hrafn
Können Sie uns zeigen, was Sie versucht haben? Was Sie zuvor gefunden haben, funktioniert nicht?
DForck42
@ DForck42 Diese Frage ist wirklich nicht mehr relevant (fast 4 Jahre alt). In den Antworten hier unten finden Sie viele Möglichkeiten, dies zu erreichen.
Hrafn

Antworten:

58

Wenn Sie android:logo="..."im <application>Tag Ihres definiert haben AndroidManifest.xml, müssen Sie dieses Zeug verwenden, um das Symbol auszublenden:

Pre-V11-Thema

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

v11 und höher Thema

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

Durch die Verwendung dieser beiden Stile wurde das Aktionsleistensymbol auf einem 2.3- und einem 4.4-Gerät für mich ordnungsgemäß ausgeblendet (diese App verwendet AppCompat ).

Charles Madere
quelle
Dies funktioniert, aber in meinem Fall wird das Symbol / Logo meiner App wieder angezeigt, wenn ich eine Suchansicht habe und darauf klicke / sie erweitere. Irgendwelche Ideen?
Acrespo
@acrespo hmm Ich weiß wovon du sprichst, aber ich habe keine Lösung für diese gefunden, sorry.
Charles Madere
1
Was ich am Ende ist zu tun Einstellung <application (...) android:logo="@android:color/transparent"> (...)in meinem AndroidManifest.xmlund zwingt useLogofür displayOptionsin meinem Stil wie diese <item name="android:displayOptions">showHome|useLogo|homeAsUp|showTitle</item> <item name="displayOptions">showHome|useLogo|homeAsUp|showTitle</item>. Dieser letzte Teil war wichtig, da bei einigen Geräten (ich denke meistens nach dem Lutscher) die verdammte Suchansicht das AppIcon anstelle des Logos verwendet hat, auch wenn das Logo als transparent festgelegt wurde: s
acrespo
228

Fügen Sie den folgenden Code in Ihre Aktionsleistenstile ein:

<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: Ich benutze Actionbar Sherlock und das funktioniert einwandfrei.

Qiqi Abaziz
quelle
2
Ein ganz schöner Trick, danke! Es nimmt sogar keinen Platz mehr in der Aktionsleiste ein!
Igor Čordaš
6
Danke ..es hat auch im Code funktioniert ... actionBar.setIcon (android.R.color.transparent);
Jagdeep Singh
1
Ausgezeichnete Antwort ... :)
Bytecode
24
Einige Samsung-Geräte werden @android:color/transparentals SCHWARZ angezeigt . Scheint verrückt zu sein, aber viele Gerätehersteller überschreiben die Standardeinstellungen von Android. einschließlich Farben. Aus diesem Grund würde ich eine Farbe in colours.xml wie folgt erstellen: <color name="transparent">#00000000</color>und darauf verweisen, anstatt den Wert von Android zu erhalten.
Matt W
1
@jose_GD: android: displayOptions ist nur Version 11 und höher, daher müssen beide abwärtskompatibel sein.
Nilzor
115

Wenn Sie das Symbol in einer bestimmten Aktivität nicht möchten.

getActionBar().setIcon(
   new ColorDrawable(getResources().getColor(android.R.color.transparent)));    
Laksh
quelle
45
getActionBar (). setIcon (android.R.color.transparent); scheint ausreichend zu sein
Boy
Die Aufrufmethode getActionBar () .... ist eine bessere Lösung für dieses Problem (Symbol aus der Aktionsleiste entfernen). Wenn Sie die Navigationsleiste und die Aktionsleiste verwenden, befindet sich Ihre Aktionsleiste über der Navigationsleiste. Wenn Sie setDisplayShowHomeEnabled (false) verwenden, befindet sich die Navigationsleiste über der Aktionsleiste und Sie möchten dies nicht.
Horkavlna
Ich würde dies ändern in: ColorDrawable cd = new ColorDrawable(getResources().getColor(android.R.color.transparent)); cd.setBounds(0,0,0,0); getActionBar().setIcon(cd); Ohne die Grenzen
festzulegen, verbraucht
1
@Aedis: Zeigt immer noch leeren Bereich links von der Aktionsleiste an. irgendwelche Vorschläge?
Rowan
Dies funktioniert einwandfrei, wenn Sie kein Logo festgelegt haben. In meinem Fall musste ich setLogoanstelle der setIconMethode verwenden. Trotzdem, toller Tipp, habe mich auf den richtigen Weg gebracht !!
Luiscosta
49

Das hat bei mir funktioniert

getActionBar().setDisplayShowHomeEnabled(false);
Brune
quelle
2
Dadurch wird die Aktionsleiste unter die Registerkarten / Navigationsleiste eingefügt. Anscheinend ist dieses Verhalten " beabsichtigt
Roger Keays
Dies beantwortet die Frage ohnehin nicht. Ich wusste von dieser Funktion, habe aber nach XML gefragt!
Hrafn
Dies scheint die Antwort zu sein - ansonsten wenden Sie eine globale Lösung an, die zweifellos jeder will. In meinem Fall möchte ich das Logo auf einigen Seiten anzeigen, auf anderen Seiten macht es jedoch keinen Sinn und überfrachtet die Aktionsleiste.
DiscDev
28

Berufung

mActionBar.setDisplayHomeAsUpEnabled(true);

zusätzlich zu,

mActionBar.setDisplayShowHomeEnabled(false);

blendet das Logo aus, zeigt aber das Home As Up-Symbol an. :) :)

Atul O Holic
quelle
Dies beantwortet die Frage ohnehin nicht. Ich wusste von dieser Funktion, habe aber nach XML gefragt!
Hrafn
@Hrafn - Ich dachte, XML sei die bevorzugte Antwort, nicht die EINZIGE Antwort. :( Ich denke, es hilft immer noch Menschen. :)
Atul O Holic
15

Beachten Sie, dass:

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

Macht auch Ihre Optionselemente transparent.

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

    //disable application name from ActionBar
    getActionBar().setDisplayShowTitleEnabled(false);
Pawel Miechowiecki
quelle
Dies beantwortet die Frage ohnehin nicht. Ich wusste von dieser Funktion, habe aber nach XML gefragt!
Hrafn
12
getActionBar().setIcon(android.R.color.transparent);

Das hat bei mir funktioniert.

dn_c
quelle
11

Entfernen oder zeigen Sie den Titel mit:

getActionBar().setDisplayShowTitleEnabled(true);

Entfernen oder zeigen Sie das Logo mit:

getActionBar().setDisplayUseLogoEnabled(false);

Alles entfernen:

getActionBar().setDisplayShowHomeEnabled(false);
Tiago Gouvêa
quelle
Dies beantwortet die Frage ohnehin nicht. Ich wusste von dieser Funktion, habe aber nach XML gefragt!
Hrafn
9

Sie können den folgenden Code auch in AndroidManifest.xml hinzufügen .

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

Es wird gut funktionieren.

Ich stellte jedoch fest, dass dies ein Problem darstellt, da das Startsymbol ebenfalls transparent wird.

Also habe ich verwendet:

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

und es hat gut funktioniert.

Wenn Sie jedoch mehr als eine Aktivität haben und das Symbol einer Aktivität transparent machen möchten, funktioniert der vorherige Ansatz.

Sam
quelle
2

Ich habe das benutzt und es hat bei mir funktioniert.

        getActionBar().setIcon(
        new ColorDrawable(getResources().getColor(android.R.color.transparent)));
user2900761
quelle
Dies beantwortet die Frage ohnehin nicht. Ich wusste von dieser Funktion, habe aber nach XML gefragt!
Hrafn
2
getActionBar().setIcon(new ColorDrawable(getResources().getColor(android.R.color.transparent)));
getActionBar().setDisplayHomeAsUpEnabled(true);
user3748515
quelle
Willkommen beim Stapelüberlauf! Normalerweise werden Antworten, die Ihren ähnlich sind, als eher minderwertig angesehen. Zum späteren Nachschlagen sollten Sie einige Erklärungen zu dem von Ihnen bereitgestellten Code hinzufügen und den Code besser strukturieren (am Anfang jeder Zeile 4 Leerzeichen einfügen oder alles auswählen und auf das Symbol {} über dem Textfeld klicken). Sie sollten dem Datum der Frage (vor über einem Jahr) und der Tatsache, dass sie bereits beantwortet wurde (grünes Häkchen), mehr Aufmerksamkeit schenken. Viel Glück bei Ihrer Programmierung :)
Hristo Valkanov
Dies beantwortet die Frage ohnehin nicht. Ich wusste von dieser Funktion, habe aber nach XML gefragt!
Hrafn
1

Ich denke, die genaue Antwort lautet: für API 11 oder höher:

getActionBar().setDisplayShowHomeEnabled(false);

Andernfalls:

getSupportActionBar().setDisplayShowHomeEnabled(false);

(weil es eine Unterstützungsbibliothek benötigt.)

David
quelle
Dies beantwortet die Frage ohnehin nicht. Ich wusste von dieser Funktion, habe aber nach XML gefragt!
Hrafn
1

Gehen Sie zu Ihrem Manifest und suchen Sie das Anwendungs-Tag

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

..... ... ...

Avinash Ajay Pandey
quelle
0

Die Antwort von Qiqi Abaziz ist in Ordnung, aber ich hatte noch lange Mühe, sie mit dem Kompatibilitätspaket zum Laufen zu bringen und den Stil auf die richtigen Elemente anzuwenden. Auch der Transparenz-Hack ist nicht notwendig. Hier ist ein vollständiges Beispiel für Version 8 und höher:

values ​​\ 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 (Shell)

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

Gehen Sie in Ihr Manifest und suchen Sie Ihre Aktivität. Fügen Sie dann diesen Code hinzu:

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

über der Zeile verstecken Sie Ihre Actionbar.

Wenn Sie eine andere Funktion benötigen, können Sie andere Optionen mit (CLR + SPC) anzeigen.

AA
quelle
0

Am schnellsten können Sie Ihre Manifest.xml ändern. Wenn Sie beispielsweise das Logo der Aktivität "Aktivität" entfernen und das Logo in anderen Aktivitäten belassen möchten, können Sie Folgendes tun:

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

Keines der oben genannten hat funktioniert.

Aber das hat es geschafft:

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

    setSupportActionBar(toolbar)
    toolbar.logo = null

(Symbol aus der Symbolleiste entfernt)

Dan Alboteanu
quelle