Android:ActionBarの「ホーム」アイコンをアプリアイコン以外のものに変更する方法は?


114

私のアプリケーションのメインアイコンは、1つの画像の2つの部分で構成されています。ロゴとその下のいくつかの文字です。これは、アプリのランチャーアイコンには適していますが、アイコンがActionBarの左端に表示されると、文字が切り取られて見栄えがよくありません。

ActionBarにアイコンの別のバージョンを提供したいと思います。「ロゴ」部分のみで、その下の文字はありませんが、これまでのところ空になっています。正直なところ、これに対する答えは見つからず、質問自体もどこにも見つかりません。

回答:


218

ActionBarは、マニフェストのandroid:logo属性が提供されている場合、それを使用します。これにより、アイコン(ランチャー)とロゴ(とりわけActionBar)に個別の描画可能なリソースを使用できます。


2
うん。アクションバーのカスタムスタイルを使用して、マニフェストによって提供されるものの代わりに使用されるロゴまたはアイコンを提供することもできます。
adamp

@Joe、AppCompatを使用したAPI <11のすべてのソリューション
cafebabe1991

49

AndroidManifest.xmlで:

<application
    android:icon="@drawable/launcher"
    android:label="@string/app_name"
    android:name="com..."
    android:theme="@style/Theme">...</Application>

styles.xml:(を参照android:icon

<style name="Theme" parent="@android:style/Theme.Holo.Light">
    <item name="android:actionBarStyle">@style/ActionBar</item>
</style>
<style name="ActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
    <item name="android:icon">@drawable/icon</item>
</style>

android:logoも同様に機能します。違いはわかりません。
AlikElzin-kilaka 2012年

:-)しかし、ここで提案されているスタイル変更ソリューションはカスタムアイコンをアクションバーにのみ適用するという点が異なりandroid:logoます。マニフェストでを定義すると、他の領域にも影響を与える可能性があります。
dbm

@dbm、「その他の分野」の例を挙げていただけますか?
AlikElzin-kilaka 2013

2
うん、興味津々でグーグルで始めたのですが、これがAndroidデベロッパーサイトのdeveloper.android.com/guide/topics/manifest/…です。それは、これは異なっているどのように私には明らかではないandorid:iconものの、属性:developer.android.com/guide/topics/manifest/...
DBM

2
アクションバーのドキュメントにはandroid:icon<activity>要素に追加できると記載されているため、さまざまなアクティビティに合わせて簡単に変更できます。私はそれを試してみましたが、うまくいきました。カスタムテーマをいじったり、すべてのアクティビティに影響を与えたりする必要はありません。
Jason


8

AppCompatを使用している場合、Gingerbread(API 10)以下を実行しているデバイスでActionBarアイコンを設定する唯一の方法は、マニフェストのすべてのアクティビティでandroid:icon属性を設定するか、プログラムでドローアブルを設定することです。

<manifest>
    <application>
        ...
        <activity android:name="com.your.ActivityName"
            ...
            android:icon="@drawable/ab_logo"/>
        ...
   </application>
</manifest>

更新:ただし、起動アクティビティでandroid:icon属性を設定すると、アプリケーションアイコンが上書きされることに注意してください。私が知っている唯一の回避策は、メインのアクティビティを起動するスプラッシュまたはダミーのアクティビティを作成することです。


動かない!! 試しましたか?必要な解決策を見つけてください。
アプルバ2015年

8

TheITに触発されて、マニフェストファイルを操作することでこれを機能させることができましたが、方法は少し異なります。大部分のアクティビティがアイコンを取得するように、アプリケーション設定でアイコンを設定します。ロゴを表示するアクティビティで、アクティビティ宣言にandroid:logo属性を追加します。次の例では、LogoActivityのみがロゴを持つ必要があり、その他はデフォルトでアイコンになります。

<application
    android:name="com.your.app"
    android:icon="@drawable/your_icon"
    android:label="@string/app_name">

    <activity
        android:name="com.your.app.LogoActivity"
        android:logo="@drawable/your_logo"
        android:label="Logo Activity" >

    <activity
        android:name="com.your.app.IconActivity1"
        android:label="Icon Activity 1" >

    <activity
        android:name="com.your.app.IconActivity2"
        android:label="Icon Activity 2" >

</application>

これが誰かを助けてくれることを願っています!


私はAndroid 2.3をサポートしたいのでAppCompat v7を使用していますが、メソッドが機能しません。
liam xu 2014

6

「extends AppCompatActivity」を使用してアクションバーを表示する場合は、試してください。

 ActionBar eksinbar=getSupportActionBar();
if (eksinbar != null) {
    eksinbar.setDisplayHomeAsUpEnabled(true);
    eksinbar.setHomeAsUpIndicator(R.mipmap.imagexxx);
}

3

ロゴを作成する

フォルダ内の「drawable-...」をすべて作成しますlogo.png。フォルダの場所: [YOUR APP]\app\src\main\res

AndroidManifest.xmlに行を追加します。 android:logo="@drawable/logo"

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:logo="@drawable/logo"
    ...

それでおしまい。


0

これをチェックしたいかもしれません、あなたはあなたのアプリアイコンに必要なすべてを手に入れました

http://developer.android.com/guide/practices/ui_guidelines/icon_design.html

更新

デフォルトではランチャーアイコンが使用されていると思います...別の画像を作成するのが最善です...アクションバー用に設計され、それを使用します。その確認のために:http : //developer.android.com/guide/topics/ui/actionbar.html#ActionItems


そのリンクをありがとうございました。アイコンから文字を削除し、アプリ全体で同じ「ロゴ」アイコンを使用する可能性がありますが、それよりも小さいバージョンまたは少し異なるバージョンを使用する必要がある場合がありますActionBar、それが私が調べようとしていることです。
Phil Ringsmuth、2011年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.