Значок приложения не отображается на панели действий в android Lollipop и выше
Я просто перехожу из api 19 Kitkat в api 21 Lollipop. И теперь я обнаружил, что значок приложения отсутствует на панели действий. Я чувствую, что мое приложение выглядит совсем по-другому. Итак, есть ли способ показать значок приложения.
Ответы
Ответ 1
В разделе "Материал" (и на основе его версии 21 AppCompat 21) панель действий следует руководства по разработке материалов и использует Toolbar:
- Заголовок и субтитры. Заголовок должен быть указателем для текущей позиции панели инструментов в иерархии навигации и содержащемся там содержимом. Подзаголовок, если он присутствует, должен указывать любую расширенную информацию о текущем контенте. Если приложение использует логотип, оно должно решительно отказаться от названия и субтитров.
В современных Android-интерфейсах разработчики должны больше ориентироваться на визуально отличную цветовую схему для панелей инструментов, чем на значок своего приложения. Использование значка приложения плюс заголовок в качестве стандартного макета не рекомендуется на устройствах API 21 и новее.
Однако, если вы хотите использовать значок приложения, setLogo() - правильный метод.
Ответ 2
Я также хотел бы показать свою потрясающую иконку приложения в Lollipop +, поэтому вот что я использовал.
mActionBar.setDisplayShowHomeEnabled(true);
mActionBar.setIcon(Drawable); // Or drawable resource id.
Источник: ActionBar # setDisplayShowHomeEnabled (boolean)
Ответ 3
Это сработало для меня -
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, похоже, не работает без него. Оригинальный ответ - значок приложения v.2 приложения app compat не отображается
Этот код работал на моем устройстве. Дайте мне знать, если у вас есть дополнительные вопросы.
Ответ 4
Вот как я это сделал:
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);
}
}
Это даст вам следующее:
![введите описание изображения здесь]()
Ответ 5
вы должны использовать панель инструментов в своем приложении, как показано ниже.
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 напишите ниже код для значка set:
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);
}
Ответ 6
Попробуйте следующее: -
getSupportActionBar.setDisplayHomeAsUpEnabled(true);