Значок приложения не отображается на панели действий

Я выполнил инструкции по созданию нового проекта android, и я получил запускаемый, кроме проблемы с панелью действий. Проблема в том, что значок приложения не отображается рядом с названием приложения на панели действий. Я создал проект с конфигурацией ниже:

  • минимальный необходимый SDK: API 8: Android 2.2 (Froyo)

  • целевой SDK: API 21: Android 4.X (L предварительный просмотр)

  • компиляция с помощью: API 21: Android 4.X (L предварительный просмотр)

  • тема: Холо свет с темной панели действий (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 и значок приложения также отображается успешно. Но мне нужно мое приложение для поддержки старых ОС android, таких как api 8. Так что же мне делать, чтобы решить эту проблему? Очень ценю ваше внимание.

P. S: Я прошел через задачу выше на windows ,mac, eclipse , Android studio и получил тот же результат.

6 ответов


вы используете AppCompat версия 21+ и это нормально.

панель действий следует за руководящие принципы проектирования материалов и использует панели инструментов. Как вы можете прочитать здесь:

использование значка приложения плюс название в качестве стандартного макета не рекомендуется на устройствах API 21 и новее.

Если вы хотите значок приложения (но я не рекомендую его), можно использовать метод setLogo().

что-то вроде этого:

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

эта проблема возникает при использовании библиотеки поддержки, пересмотренной 21.

использование:

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

Он работал для меня или вы можете использовать панель инструментов. Панель инструментов-это обобщение панелей действий для использования в макетах приложений.

в современных Android UIS разработчики должны опираться больше на визуально различимую цветовую схему для панелей инструментов, чем на значок приложения. Использование значка приложения плюс заголовок в качестве стандартного макета не рекомендуется на устройствах API 21 и новее.

ссылка: https://developer.android.com/reference/android/support/v7/widget/Toolbar.html


убедитесь,что в манифесте установлен значок.xml-файл, в теге приложения как:

    android:icon="@drawable/launcher_icon"

затем в метод onCreate вставьте следующие строки:

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

Это распространенная "проблема".Прежде чем вытащить волосы, убедитесь, что вы используете:

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);
    }

логотип атрибута используется только на уровне API 11 и выше (текущий мин-8), я также был смущен этим вопросом, возможно,google просто не хочет, чтобы значок отображался на material design, когда минимальный sdk установлен на 14 или выше и ниже 21, он использует тему holo, у него есть значок, но стиль appcompat больше похож на material design я думаю, может быть, google просто забудет изменить тему holo


в стиле.в XML

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

в activity добавьте это и попробуйте

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