web-dev-qa-db-ja.com

Android:ActionBarの「ホーム」アイコンをアプリアイコン以外に変更するにはどうすればよいですか?

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

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

111
Phil Ringsmuth

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

218
Joe

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

この行を試してください

getSupportActionBar().setHomeAsUpIndicator(R.drawable.back_arrow);
14
TheLastSummer

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

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

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

8
TheIT

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>

これが他の誰かの助けになることを願っています!

7
proudgeekdad

ロゴを作成する

フォルダー「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"
    ...

それでおしまい。

3
awariat

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

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

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

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

update

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

0
Stevanicus