Подтвердить что ты не робот

Иконка "Нет приложений" на ActionBar

Здесь много вопросов о добавлении значков в ActionBar, но никто не решил мою проблему. Если вы знаете дубликат этого вопроса, не стесняйтесь комментировать или закрывать этот вопрос.

Я перенес свой проект в IntelliJ, и я не сталкивался с этой проблемой с моей предыдущей IDE (Eclipse).

ПРОБЛЕМА: значок приложения не отображается в ActionBar.

enter image description here

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

enter image description here

Вот его XML

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity" >

    <item android:id="@+id/action_settings"
        android:title="@string/action_settings"
        android:orderInCategory="100"
        app:showAsAction="always" />
</menu>

Спасибо!

4b9b3361

Ответ 1

Начиная с версии AppCompat 21, панель действий следует принципам проектирования материалов и использует Toolbar:

  • Заголовок и субтитры. Заголовок должен быть указателем для текущей позиции панели инструментов в иерархии навигации и содержащемся там содержимом. Подзаголовок, если он присутствует, должен указывать любую расширенную информацию о текущем контенте. Если приложение использует логотип, оно должно решительно отказаться от названия и субтитров.

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

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

Ответ 2

Обновите свой метод onCreate() с помощью кода ниже.

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setLogo(R.drawable.ic_launcher);
    getSupportActionBar().setDisplayUseLogoEnabled(true);
    setContentView(R.layout.activity_main);
}

Это сработало для меня. note: ic_launcher - это значок, который вы хотите отобразить на панели действий, для этого вам нужно будет добавить значок в выпадающую папку вашего проекта приложения.

Ответ 3

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

Ответ 4

Если вам не нужна тема "Материал", и у вас есть активность, которая выглядит больше JellyBean/Kitkat и включает значок в панели действий, вы можете сделать следующее:

Сначала измените настройки тем в styles.xml следующим образом:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

Для этого:

<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">

Теперь измените все свои действия на наследование с помощью android.app.Activity вместо android.support.v7.app.ActionBarActivity. То есть:

Измените это:

import android.support.v7.app.ActionBarActivity;

public class MainActivity extends ActionBarActivity{

Для этого:

import android.app.Activity;

public class MainActivity extends Activity {

Конечным результатом выполнения обоих вышеперечисленных шагов является то, что значок значка, указанный атрибутом android: icon в AndroidManifest.xml, появится в панели действий.

Ответ 5

Это действительно работает. Попробуй это.. Включите эти строки в свой метод onCreate,

ActionBar menu = getSupportActionBar();
menu.setDisplayShowHomeEnabled(true);
menu.setIcon(R.mipmap.jerry);

Кроме того, убедитесь, что jerry является файлом изображения PNG, доступным в папке mipmap. Чтобы получить значок точно в начале панели действий, введите jerry файл во всех размерах экрана, таких как (hdpi, mdpi, xhdpi, xxhdpi, xxxhdpi и т.д.) В папке mipmap.