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

Я только что потратил много часов на создание значка для Android-приложения, над которым я работаю, но не могу заставить его отображаться для приложения в эмуляторе.

Я поставил его в res/drawable-hdpi, res/drawable-mdpi, res/drawable-ldpi в соответствующих размерах, как определено в http://developer.android.com/guide/practices/ui_guidelines/icon_design_launcher.html

манифест содержит строку:

 <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">

Любые идеи относительно того, почему он не появляется?

Ответ 1

  • Убедитесь, что значок сохранен с именем icon.png в этих папках.
  • Убедитесь, что у android есть ресурс drawable/icon. Проверьте это, посмотрев на ваш файл gen/R.java и увидив публичный статический окончательный int icon = 0x.... в возвращаемом внутреннем классе.
  • Попробуйте очистить сборку проекта и удалить любую существующую версию вашего приложения с вашего телефона/эмулятора, а затем переустановите новую версию.

Ответ 2

Обратите внимание на комментарий Win Myo Htet относительно принятого ответа. Он решил мою проблему.

Jems since your answer has so much vote, can you add the following pointer too: Make sure that intent-filter for MAIN and LAUNCHER is not mixed with other intent-filter. – Win Myo Htet Dec 6 '15 at 5:47

" смешанный", являющийся ключевым словом. У меня было намерение в моем файле AndroidManifest.xml, который был там, чтобы предотвратить доступ всех типов файлов в файлах. В то время как он начинался с решения второго ответа, он содержал дополнительное намерение для выбора файла. Это помешало Android установить мои значки при установке приложения. Я хотел опубликовать это на случай, если кто-нибудь еще столкнется с этой проблемой, так как блестящий совет Win My Htet можно легко упустить, поскольку это по сути одно слово " mixed"

Ответ 3

Удостоверьтесь, что Цель вашего действия Launcher называется MAIN i.e,

<intent-filter>
        <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>

Кроме того, добавьте значок в свои папки с возможностью рисования, а затем отправьте его в блок приложения манифеста.

<application
android:allowBackup="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@style/AppTheme" >

Ответ 4

Если вы попробовали все в ответе Джемса и он все еще не отображается, попробуйте перезагрузить устройство/эмулятор. Тогда он должен появиться.

Ответ 5

Если вы работаете на Android 5.0, просто добавьте эти строки в метод onCreate, внутри MainActivity:

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

Это может помочь в вашем случае.

Ответ 6

Недавно у меня была аналогичная проблема, и в итоге я обнаружил, что есть две причины:

  • Расширение файла: чтобы оставаться на более безопасной стороне, всегда придерживайтесь формата.png. Некоторые другие форматы фактически работают на определенных устройствах (например, с использованием значка.jpg, который все еще появился на моем телефоне Infinix note 4), но файлы.png гарантированно работают на всех устройствах.

  • Место хранения: ваш файл значков должен находиться в папке с возможностью переноса. Не забудьте сделать двойную проверку относительно того, указывает ли ваш файл манифеста на место, в котором вы также сохранили свой код.

Надеюсь, это поможет... Веселая кодировка!