我只是从api 19 Kitkat迁移到api 21 Lollipop。现在我发现应用程序图标不在操作栏上。我觉得我的应用看起来有点不同。那么有没有办法显示应用程序图标。
答案 0 :(得分:14)
在Material主题(以及基于它的AppCompat版本21)中,操作栏跟在material design guidelines之后并使用Toolbar:
- 标题和副标题。标题应该是工具栏在导航层次结构中的当前位置以及其中包含的内容的路标。字幕(如果存在)应指示有关当前内容的任何扩展信息。 如果应用使用徽标图片,则应强烈考虑省略标题和副标题。
在现代Android UI中,开发人员应该更多地依赖于工具栏的视觉上不同的颜色方案而不是应用程序图标。 不鼓励在API 21设备和更新版本上使用应用程序图标和标题作为标准布局。
但是,如果您需要应用程序图标,setLogo()是正确的方法。
答案 1 :(得分:6)
我还希望在Lollipop +中显示我真棒的应用程序图标,所以这就是我使用的内容。
mActionBar.setDisplayShowHomeEnabled(true);
mActionBar.setIcon(Drawable); // Or drawable resource id.
答案 2 :(得分:4)
这对我有用 -
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似乎无法正常工作。原始答案 - App compat actionbar v21 app icon is not showing
此代码适用于我的设备。如果您有任何其他问题,请与我们联系。
答案 3 :(得分:2)
我就这样做了:
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);
}
}
哪个会给你这个:
答案 4 :(得分:2)
你必须在你的应用中使用工具栏,如下所示。
<强> 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);
}
答案 5 :(得分:0)
试试这个: -
getSupportActionBar.setDisplayHomeAsUpEnabled(true);