Androidのアクションバーからアイコン/ロゴを削除する


146

私はアクションバーからアイコン/ロゴを削除する方法を探していましたが、SO、Androidのドキュメント、およびGoogleを1時間検索した後に見つけた唯一のことは、タイトルバー全体を削除する方法です。それは私が望むものではありません。タイトルバーからアイコン/ロゴのみを削除したい。

これを達成する方法を知っている人はいますか?できれば、これをXMLで行いたいと思います


1
アクションバーのAPIガイドを読んだだけかもしれません。それはガイドの中でそれを正しく言っています。
Mgamerz 2013年

6
すべての情報はどこかにあります。
Hrafn 2013年

何を試したのか教えてもらえますか?以前に見つけたもので機能しないものはありますか?
DForck42 2016年

@ DForck42この質問はもう関係ありません(ほぼ4歳)。これを達成するための多くの方法を以下の回答で見つけることができます。
Hrafn 2016年

回答:


58

android:logo="..."<application>タグで定義した場合はAndroidManifest.xml、次のものを使用してアイコンを非表示にする必要があります。

pre-v11テーマ

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

v11以降のテーマ

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

これらの2つのスタイルを使用すると、2.3および4.4デバイスのアクションバーアイコンが適切に非表示になりました(このアプリはAppCompatを使用しています)。


これは機能しますが、私の場合、検索ビューがあり、クリック/展開すると、アプリのアイコン/ロゴが再表示されます。何か案は?
acrespo 2015

@acrespoうーん、あなたが何を話しているのかはわかっていますが、その解決策を調査していません。
Charles Madere

1
私がやったことは<application (...) android:logo="@android:color/transparent"> (...)、自分の中にセッティングしてAndroidManifest.xml、このような自分のスタイルに強いることuseLogoです。この最後の部分は、いくつかのデバイスのように重要だった(私は主にポストロリポップ思う)のろわsearchviewはロゴが透明に設定された場合でも、APPICONを取って、ロゴの代わりにそれを置く:SdisplayOptions<item name="android:displayOptions">showHome|useLogo|homeAsUp|showTitle</item> <item name="displayOptions">showHome|useLogo|homeAsUp|showTitle</item>
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
結構なトリック、ありがとう!アクションバーのスペースを占有することも停止します。
IgorČordaš2013

6
おかげで..itもコードで動作しました... actionBar.setIcon(android.R.color.transparent);
Jagdeep Singh 2013

1
すばらしい答え... :)
バイトコード

24
一部のSamsungデバイスは黒で表示さ@android:color/transparentれます。狂ったように見えますが、多くのデバイスメーカーがAndroidのデフォルト設定を上書きしています。色を含む。このため、colors.xmlで次のように色を作成し、<color name="transparent">#00000000</color>Androidから値を取得する代わりにその色を参照します。
マットW

1
@jose_GD:android:displayOptionsはv11以降のみであるため、両方に下位互換性が必要です。
Nilzor 2014

115

特定のアクティビティでアイコンを使用したくない場合。

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

45
getActionBar()。setIcon(android.R.color.transparent); 十分だと思われる
Boy

メソッドgetActionBar()....を呼び出すと、この問題(アクションバーからアイコンを削除する)の方が良い解決策です。ナビゲーションバーとアクションバーを使用すると、アクションバーがナビゲーションバーの上に表示されるためです。setDisplayShowHomeEnabled(false)を使用すると、ナビゲーションバーがアクションバーの上になり、これが不要になります。
horkavlna 2014年

これを次のように変更し ColorDrawable cd = new ColorDrawable(getResources().getColor(android.R.color.transparent)); cd.setBounds(0,0,0,0); getActionBar().setIcon(cd); ます。境界を設定しなくても、透明なアイコンがスペースを
使い果たす

1
@Aedis:アクションバーの左側にまだ空のスペースが表示されます。助言がありますか?
Rowan

ロゴを設定していない場合、これは正常に機能します。私の場合setLogosetIconメソッドの代わりに使用する必要がありました。それでも、素晴らしいヒント、正しい道に私を導きました!!
luiscosta 2016

49

これは私のために働いた

getActionBar().setDisplayShowHomeEnabled(false);

2
これにより、アクションバーがタブ/ナビゲーションバーの下に配置されます。どうやらこの動作は「仕様による」ものです... code.google.com/p/android/issues/detail?id=36191
Roger Keays

とにかくこれは質問に答えません。この機能については知っていましたが、XMLを求めていました。
Hrafn 2015年

これは答えであるように見えます-そうでなければあなたはグローバルなソリューションを適用しています、それは誰もが望んでいることではないでしょうか。私の場合、一部のページにロゴを表示したいのですが、他のページでは意味がなく、アクションバーが煩雑です。
DiscDev 2015

28

呼び出す

mActionBar.setDisplayHomeAsUpEnabled(true);

に加えて、

mActionBar.setDisplayShowHomeEnabled(false);

ロゴは非表示になりますが、Home As Upアイコンが表示されます。:)


とにかくこれは質問に答えません。この機能については知っていましたが、XMLを求めていました。
Hrafn 2015年

@Hrafn-XMLが唯一の答えではなく、優先される答えだと思いました。:(私はそれがまだ人々を助けていると思います。:)
Atul O Holic

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を求めていました。
Hrafn 2015年

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

これでうまくいきました。


11

次を使用してタイトルを削除または表示します。

getActionBar().setDisplayShowTitleEnabled(true);

次を使用してロゴを削除または表示します。

getActionBar().setDisplayUseLogoEnabled(false);

すべて削除する:

getActionBar().setDisplayShowHomeEnabled(false);

とにかくこれは質問に答えません。この機能については知っていましたが、XMLを求めていました。
Hrafn 2015年

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を求めていました。
Hrafn 2015年

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

スタックオーバーフローへようこそ!通常、あなたに似た答えはかなり質が低いと考えられます。今後の参考のために、提供したコードに関する説明を追加し、コードを適切に構成する必要があります(各行の先頭に4つのスペースを追加するか、すべてを選択して、テキストボックスの上の{}記号をクリックします)。また、質問の日付(1年以上前)および既に回答済みであること(緑色のチェック記号)にもっと注意を払う必要があります。あなたのプログラミングの幸運:)
Hristo Valkanov

とにかくこれは質問に答えません。この機能については知っていましたが、XMLを求めていました。
Hrafn 2015年

1

私は正確な答えは次のとおりだと思います:API 11以上の場合:

getActionBar().setDisplayShowHomeEnabled(false);

さもないと:

getSupportActionBar().setDisplayShowHomeEnabled(false);

(サポートライブラリが必要なため)。


とにかくこれは質問に答えません。この機能については知っていましたが、XMLを求めていました。
Hrafn 2015年


0

Qiqi Abazizの答えは問題ありませんが、互換性パックを使用してスタイルを適切な要素に適用するのに長い間苦労しました。また、透明性のハックは不要です。だからここにv8以上で動作する完全な例があります:

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(シェル)

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

(ツールバーからアイコンを削除)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.