Android'de eylem çubuğundan simge / logoyu kaldır


146

Simgeyi / logoyu işlem çubuğundan kaldırmanın bir yolunu bulmaya çalışıyorum, ancak bir saat SO, Android belgeleri ve Google'da arama yaptıktan sonra bulduğum tek şey, başlık çubuğunun nasıl tamamen kaldırılacağı. İstediğim bu değil. Yalnızca simgeyi / logoyu başlık çubuğundan kaldırmak istiyorsunuz.

Bunu nasıl başaracağını bilen var mı? Tercihen bunu XML olarak yapmak istiyorum .


1
İşlem çubuğundaki API kılavuzunu okuyabilirdiniz. Kılavuzda doğru yazıyor.
Mgamerz

6
Her bilgi parçası bulunabilecek bir yerdedir.
Hrafn

bize ne denediğini gösterebilir misin? daha önce bulduğunuz işe yaramıyor mu?
DForck42

@ DForck42 Bu soru artık gerçekten alakalı değil (neredeyse 4 yaşında). Aşağıdaki cevaplarda bunu başarmanın birçok yolunu bulabilirsiniz.
Hrafn

Yanıtlar:


58

Tanımladığınız Eğer android:logo="..."içinde <application>, aramalarınızdan etiketi AndroidManifest.xml, o zaman simgesini gizlemek için bu şeyleri kullanmak gerekir:

v11 öncesi tema

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

v11 ve üzeri tema

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

Bu iki stilin kullanımı benim için bir 2.3 ve 4.4 cihazdaki işlem çubuğu simgesini düzgün şekilde gizledi (bu uygulama AppCompat kullanıyor ).


Bu çalışıyor, ancak benim durumumda, bir arama görünümüne sahip olduğumda ve onu tıkladığımda / genişlettiğimde, uygulama simgem / logom yeniden beliriyor. Herhangi bir fikir?
acrespo

@acrespo hmm Neden bahsettiğinizi biliyorum ama bunun için bir çözüm araştırmadım, üzgünüm.
Charles Madere

1
Ne yaptığını sona erdi ayardır <application (...) android:logo="@android:color/transparent"> (...)içinde benim AndroidManifest.xmlve zorlama useLogoiçin displayOptionsböyle benim tarzı <item name="android:displayOptions">showHome|useLogo|homeAsUp|showTitle</item> <item name="displayOptions">showHome|useLogo|homeAsUp|showTitle</item>. Bu son kısım önemliydi, çünkü bazı cihazlarda (sanırım çoğunlukla lolipop sonrası) lanet olası arama görünümü appIcon'u aldı ve logo şeffaf olarak ayarlanmış olsa bile logonun yerine koydu: s
acrespo

228

İşlem çubuğu stillerinize aşağıdaki kodu ekleyin:

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

Not: Actionbar Sherlock kullanıyorum ve bu gayet iyi çalışıyor.


2
Oldukça güzel bir numara, teşekkürler! Hatta eylem çubuğunda yer kaplamayı bile durdurur!
Igor Čordaš

6
Teşekkürler .. kodda da çalıştı ... actionBar.setIcon (android.R.color.transparent);
Jagdeep Singh

1
Mükemmel cevap ... :)
Bytecode

24
Bazı Samsung cihazları @android:color/transparentSİYAH olarak görüntülenir . Çılgınca görünüyor, ancak birçok cihaz üreticisi Android'in varsayılan ayarlarını geçersiz kılıyor; renkler dahil. Bundan dolayı, colours.xml'de şöyle bir renk yaratırdım: <color name="transparent">#00000000</color>ve değeri Android'den almak yerine buna referans veririm .
Matt W

1
@jose_GD: android: displayOptions yalnızca v11 ve üstüdür, bu nedenle her ikisinin de geriye dönük uyumlu olması gerekir.
Nilzor

115

Simgeyi belirli bir aktivitede istemiyorsanız.

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

45
getActionBar (). setIcon (android.R.color.transparent); Yeterli görünüyor
Erkek

çağrı yöntemi getActionBar () .... bu sorunu daha iyi bir çözümdür (simgeyi eylem çubuğundan kaldırın) çünkü gezinme çubuğunu ve eylem çubuğunu kullanırsanız eylem çubuğunuz gezinme çubuğunun üzerinde olacaktır. SetDisplayShowHomeEnabled (false) kullanırsanız gezinme çubuğu eylem çubuğunun üzerinde olur ve bunu istemezsiniz.
horkavlna

Bunu şu şekilde değiştirirdim: ColorDrawable cd = new ColorDrawable(getResources().getColor(android.R.color.transparent)); cd.setBounds(0,0,0,0); getActionBar().setIcon(cd); Sınırları ayarlamadan şeffaf simge hala yer kullanıyor
Aedis

1
@Aedis: eylem çubuğunun solunda hala boş alan gösteriyor. herhangi bir öneri?
Rowan

Bir logo belirlemediyseniz bu iyi çalışır. Benim durumumda yöntem setLogoyerine kullanmak zorunda kaldım setIcon. Yine de harika bir ipucu, beni doğru yola soktu !!
luiscosta

49

Bu benim için çalıştı

getActionBar().setDisplayShowHomeEnabled(false);

2
Bu işlem çubuğunu sekmeler / gezinme çubuğunun altına yerleştirir. Görünüşe göre bu davranış "tasarım gereğidir" ... code.google.com/p/android/issues/detail?id=36191
Roger Keays

Zaten bu soruya cevap vermiyor. Bu özelliği biliyordum ama XML istiyordum!
Hrafn

Cevap bu gibi görünüyor - aksi takdirde küresel bir çözüm uyguluyorsunuz, ki herkesin istediğinden şüpheliyim. Benim durumumda, logoyu bazı sayfalarda göstermek istiyorum, ancak diğer sayfalarda bu bir anlam ifade etmiyor ve işlem çubuğunu karıştırıyor.
DiscDev

27

Aranıyor

mActionBar.setDisplayHomeAsUpEnabled(true);

ek olarak,

mActionBar.setDisplayShowHomeEnabled(false);

logoyu gizleyecek ancak Home As Up simgesini gösterecektir. :)


Zaten bu soruya cevap vermiyor. Bu özelliği biliyordum ama XML istiyordum!
Hrafn

@Hrafn - XML'in YALNIZCA yanıt değil, tercih edilen yanıt olduğunu düşündüm. :( Sanırım hala insanlara yardım ediyor. :)
Atul O Holic

15

Farkında olmak:

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

Ayrıca seçeneklerinizi şeffaf hale getirecektir.


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

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

Zaten bu soruya cevap vermiyor. Bu özelliği biliyordum ama XML istiyordum!
Hrafn

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

Bu benim için çalıştı.


11

Şunu kullanarak başlığı kaldırın veya gösterin:

getActionBar().setDisplayShowTitleEnabled(true);

Aşağıdakileri kullanarak logoyu kaldırın veya gösterin:

getActionBar().setDisplayUseLogoEnabled(false);

Hepsini kaldır:

getActionBar().setDisplayShowHomeEnabled(false);

Zaten bu soruya cevap vermiyor. Bu özelliği biliyordum ama XML istiyordum!
Hrafn

9

AndroidManifest.xml'de aşağıdaki kodu da ekleyebilirsiniz .

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

İyi çalışacak.

Ancak başlatıcı simgesi de şeffaf hale geldikçe bunun bir sorun yarattığını gördüm.

Ben de kullandım:

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

ve iyi çalıştı.

Ancak birden fazla etkinliğiniz varsa ve bir etkinlik üzerindeki simgeyi şeffaf yapmak istiyorsanız, önceki yaklaşım işe yarayacaktır.


2

Bunu kullandım ve benim için çalıştı.

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

Zaten bu soruya cevap vermiyor. Bu özelliği biliyordum ama XML istiyordum!
Hrafn

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

Stack overflow'a hoş geldiniz! Genellikle sizinkine benzer cevaplar oldukça düşük kaliteli olarak kabul edilir. İleride başvurmak için, sağladığınız kodla ilgili bazı açıklamalar eklemeyi düşünmelisiniz ve kodu daha iyi yapılandırmalısınız (her satırın başına 4 boşluk ekleyin veya tümünü seçin ve metin kutusunun üstündeki {} simgesini tıklayın.) Ayrıca, Sorunun tarihine (bir yıldan fazla bir süre önce) ve zaten yanıtlanmış olmasına (yeşil onay işareti) daha fazla dikkat etmelisiniz. Programlamanda iyi şanslar :)
Hristo Valkanov

Zaten bu soruya cevap vermiyor. Bu özelliği biliyordum ama XML istiyordum!
Hrafn

1

Bence kesin cevap: API 11 veya üstü için:

getActionBar().setDisplayShowHomeEnabled(false);

aksi takdirde:

getSupportActionBar().setDisplayShowHomeEnabled(false);

(çünkü bir destek kitaplığına ihtiyacı var.)


Zaten bu soruya cevap vermiyor. Bu özelliği biliyordum ama XML istiyordum!
Hrafn

1

bildiriminize gidin ve uygulama etiketini bulun

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

..... ... ...


0

Qiqi Abaziz'in cevabı tamam, ancak yine de uzun süredir uyumluluk paketi ile çalışmasını sağlamak ve stili doğru öğelere uygulamak için uğraştım. Ayrıca, şeffaflık kesmek de gereksizdir. İşte v8 ve üzeri için çalışan eksiksiz bir örnek:

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 (kabuk)

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

Bildirinize gidin ve etkinliğinizi bulun ve ardından şu kodu ekleyin:

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

üstteki satırınızı gizleyin Actionbar.

Başka bir özelliğe ihtiyacınız varsa, diğer seçenekleri (CLR + SPC) ile görebilirsiniz.


0

En hızlı yol, Manifest.xml dosyanızı değiştirmektir. Örneğin, "Etkinlik" etkinliğinin logosunu kaldırmak ve logoyu diğer etkinliklerde bırakmak istiyorsanız, aşağıdakileri yapabilirsiniz:

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

0

Yukarıdakilerin hiçbiri işe yaramadı.

Ama bu hile yaptı:

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

    setSupportActionBar(toolbar)
    toolbar.logo = null

(araç çubuğundan kaldırılan simge)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.