应用程序图标在Android棒棒糖及以上版本的操作栏上不可见

我只是从api 19 Kitkat迁移到api 21 Lollipop。 现在我发现应用程序图标不在操作栏上。 我觉得我的应用程序看起来有点不一样。 那么有没有什么方法来显示应用程序图标。

Solutions Collecting From Web of "应用程序图标在Android棒棒糖及以上版本的操作栏上不可见"

在Material主题(以及基于它的AppCompat版本21)中,操作栏遵循材料devise指南并使用工具栏 :

  • 标题和副标题。 标题应该是工具栏在导航层次结构中的当前位置和其中包含的内容的路标。 字幕(如果存在的话)应指出关于当前内容的任何扩展信息。 如果应用程序使用徽标图像,应该强烈考虑省略标题和副标题。

在现代的Android用户界面中,开发人员应该更多地依赖工具栏视觉上不同的颜色scheme,而不是应用程序图标。 应用程序图标加标题作为标准布局的使用在API 21设备和更新版本上是不鼓励的。

但是,如果你想要一个应用程序图标, setLogo()是正确的方法。

我也想在棒棒糖+中显示我的棒棒的应用程序图标,所以这就是我使用的。

 mActionBar.setDisplayShowHomeEnabled(true); mActionBar.setIcon(Drawable); // Or drawable resource id. 

来源: ActionBar#setDisplayShowHomeEnabled(布尔)

这对我有用 –

 getSupportActionBar().setTitle("Title"); getSupportActionBar().setSubtitle("Subtitle"); getSupportActionBar().setHomeButtonEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_USE_LOGO); // Customize if you need to getSupportActionBar().setIcon(R.drawable.iconhere); // or setLogo 

setDisplayOptions很重要,因为setIcon / setLogo似乎没有它的工作。 原始答案 – 应用程序compat actionbar v21应用程序图标不显示

此代码在我的设备上工作。 如果您还有其他问题,请告诉我。

这是我做到的:

 package com.your.package; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getSupportActionBar().setDisplayShowHomeEnabled(true); getSupportActionBar().setIcon(R.drawable.your_icon); } } 

哪个会给你这个:

在这里输入图像说明

你必须在你的应用程序中使用工具栏,如下所示。

styles.xml

 <!-- Base application theme. --> <style name="AppTheme" parent="AppTheme.Base"> <!-- Customize your theme here. --> </style> <style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> </style> 

V21 \ styles.xml

 <resources> <style name="AppTheme" parent="AppTheme.Base"> <item name="android:windowContentTransitions">true</item> <item name="android:windowAllowEnterTransitionOverlap">true</item> <item name="android:windowAllowReturnTransitionOverlap">true</item> <item name="android:windowSharedElementEnterTransition">@android:transition/move</item> <item name="android:windowSharedElementExitTransition">@android:transition/move</item> <item name="android:textColorPrimary">@color/textColorPrimary</item> <item name="android:windowBackground">@color/windowBackground</item> <item name="android:navigationBarColor">@color/navigationBarColor</item> </style> </resources> 

在你的布局使用工具栏是这样的:

 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="false" android:focusable="false" android:focusableInTouchMode="false"> <RelativeLayout xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/windowBackground"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/colorPrimary" android:minHeight="?attr/actionBarSize" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> </android.support.v7.widget.Toolbar> <FrameLayout android:id="@+id/flContent" android:visibility="gone" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@id/toolbar"> </FrameLayout> </RelativeLayout> </android.support.v4.widget.DrawerLayout> 

在你的Java文件中写下面代码设置图标:

 toolbar = (Toolbar) findViewById(R.id.toolbar); if (toolbar != null) { setSupportActionBar(toolbar); toolbar.setNavigationIcon(R.drawable.icn_menu); //toolbar.setTitle("Title"); setTitle("Title"); //toolbar.setSubtitle("Subtitle"); //toolbar.setLogo(R.drawable.ic_launcher); } 

尝试这个:-

 getSupportActionBar.setDisplayHomeAsUpEnabled(true);