web-dev-qa-db-ja.com

アプリケーションアイコンがアクションバーに表示されない

新しいAndroidプロジェクトをビルドする手順に従いましたが、アクションバーの問題を除いて実行可能なプロジェクトを取得しました。問題は、アクションバーのアプリケーションタイトルの横にアプリケーションアイコンが表示されないことです。以下の構成でプロジェクトを作成しました。

  • 最低限必要なSDK:API 8:Android 2.2(Froyo)

  • ターゲットSDK:API 21:Android 4.X(L preview)

  • コンパイル:API 21:Android 4.X(L preview)

  • テーマ:ダークアクションバー付きホロライト(Eclipseは対応するappcompatテーマを設定)

  • Androidサポートライブラリ21.0.1

  • Android SDK Build-tools 21.1.1

私の最小SDKはアクションバーをサポートしないAPI 8であるため、プロジェクトにはアクションバー機能を許可するappcompat_v7 libraryが含まれています。最小SDKをAPI 14(Android 4.0)以上に設定すると、プロジェクトにappcompat_v7 libraryが含まれず、アプリケーションアイコンも正常に表示されます。ただし、API [8]までの古いAndroid OSをサポートするにはアプリが必要です。この問題を解決するにはどうすればよいですか?本当に皆さんの注目に感謝します。

追伸:Windows、Mac、Eclipse、Androidスタジオで上記のタスクを実行し、同じ結果を得ました。

34
jeep

AppCompatバージョン21+を使用していますが、これは正常です。

アクションバーは、材料設計ガイドラインに従い、 ツールバー を使用します。あなたが読むことができるように ここ

API 21以降のデバイスでは、アプリケーションアイコンとタイトルを標準レイアウトとして使用することはお勧めしません。

アプリケーションアイコンが必要な場合(ただし、推奨しません)、setLogo()メソッドを使用できます。

このようなもの:

ActionBar actionBar = getSupportActionBar();
actionBar.setLogo(R.drawable.my_logo);
actionBar.setDisplayUseLogoEnabled(true);
actionBar.setDisplayShowHomeEnabled(true);
57

この問題は、21で改訂されたサポートライブラリを使用する場合に発生します。

つかいます:

ActionBar actionBar = getSupportActionBar();
actionBar.setLogo(R.drawable.ic_launcher);
actionBar.setDisplayUseLogoEnabled(true);
actionBar.setDisplayShowHomeEnabled(true);

それは私のために働いた、またはツールバーを使用することができます。ツールバーは、アプリケーションレイアウト内で使用するアクションバーの一般化です。

現代のAndroid UIでは、開発者はアプリケーションアイコンよりもツールバーの視覚的に明確な配色に頼るべきです。API21デバイス以降では、アプリケーションアイコンとタイトルを標準レイアウトとして使用することは推奨されません。

リファレンス: https://developer.Android.com/reference/Android/support/v7/widget/Toolbar.html

48
Ishan

Manifest.xmlファイルで、アプリケーションタグで次のようにアイコンが設定されていることを確認します。

    Android:icon="@drawable/launcher_icon"

次に、onCreateメソッドに次の行を挿入します。

    ActionBar ab =getSupportActionBar(); 
    ab.setDisplayShowHomeEnabled(true);
    ab.setIcon(R.drawable.launcher_icon);
9
user3344429

これは一般的な「問題」です。髪を引っ張る前に、使用していることを確認してください。

_import Android.support.v7.app.ActionBar; //or the v4, haven't tried with that though
_

ではなく:

_import Android.app.ActionBar;
_

その後:

_ActionBar actionBar;
actionBar = getSupportActionBar();
_

の代わりに:

actionBar = getActionBar();

そして最後に:

_if (actionBar != null) {
        // enabling action bar app icon and behaving it as toggle button           
        actionBar.setDisplayHomeAsUpEnabled(true);
        actionBar.setIcon(R.drawable.your_icon);
        actionBar.setHomeButtonEnabled(true);
        actionBar.setDisplayShowHomeEnabled(true);
    }
_
4

属性ロゴはAPIレベル11以上でのみ使用されます(現在の最小値は8です)、この質問について混乱しました21以上では、ホロテーマを使用し、アイコンがありますが、appcompatスタイルはマテリアルデザインに近いと思います。

2
cajsaiko

IN Style.xml

 <style name="MyTheme_ActionBar" parent="@style/Theme.AppCompat.Light">
   <item name="icon">@drawable/actionbar_logo</item>
  </style>

アクティビティでこれを追加して試してください

ActionBar mActionBar = getSupportActionBar();
mActionBar.setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP |
                             ActionBar.DISPLAY_SHOW_CUSTOM |
                             ActionBar.DISPLAY_SHOW_HOME);
2
Vikram