Иконка "Нет приложений" на 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>
Спасибо!
Ответы
Ответ 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.