Удалить значок / логотип с панели действий на Android

143

Я пытаюсь найти какой-то способ удаления значка/логотипа из панели действий, но единственное, что я нашел после часа поиска. SO, документация на Android и Google - как удалить строку заголовка в целом, Это не то, чего я хочу. Только хотите удалить значок/логотип из строки заголовка.

Кто-нибудь знает, как это сделать? Предпочтительно, я хотел бы сделать это в XML.

  • 1
    Вы могли бы просто прочитать руководство по API на панели действий. Это сказано прямо в путеводителе.
  • 5
    Каждый кусок информации где-то можно найти.
Показать ещё 2 комментария
Теги:
android-layout
android-actionbar
titlebar

19 ответов

57
Лучший ответ

Если вы определили android:logo="..." в теге <application> вашего AndroidManifest.xml, вам нужно использовать этот материал, чтобы скрыть значок:

тема pre-v11

<item name="logo">@android:color/transparent</item>

v11 и тема вверх

<item name="android:logo">@android:color/transparent</item>

Использование этих двух стилей правильно скрыло значок панели действий на 2.3 и 4.4 устройствах для меня (это приложение использует AppCompat).

  • 0
    Это работает, но в моем случае, когда у меня есть вид поиска и я щелкаю по нему / раскрываю его, значок / логотип моего приложения появляется снова. Есть идеи?
  • 0
    @acrespo хмм Я знаю, о чем ты говоришь, но я не нашел решения для этого, извини.
Показать ещё 1 комментарий
239

Добавьте в свой стиль действия следующий код:

<item name="android:displayOptions">showHome|homeAsUp|showTitle</item>
<item name="displayOptions">showHome|homeAsUp|showTitle</item>
<item name="android:icon">@android:color/transparent</item> <!-- This does the magic! -->

PS: Я использую Actionbar Sherlock, и это работает отлично.

  • 10
    Этот «прозрачный» трюк гениален! Спасибо!
  • 2
    Довольно хороший трюк, спасибо! Он даже перестает занимать место в панели действий!
Показать ещё 11 комментариев
109

Если вам не нужен значок в конкретной активности.

getActionBar().setIcon(
   new ColorDrawable(getResources().getColor(android.R.color.transparent)));    
  • 44
    getActionBar () SetIcon (android.R.color.transparent). кажется достаточным
  • 0
    вызов метода getActionBar () .... является лучшим решением этой проблемы (уберите значок с панели действий), потому что если вы используете панель навигации и панель действий, значит, ваша панель действий будет выше панели навигации. Если вы используете setDisplayShowHomeEnabled (false), панель навигации будет находиться над панелью действий, а вы этого не хотите.
Показать ещё 7 комментариев
47

Это сработало для меня

getActionBar().setDisplayShowHomeEnabled(false);
  • 2
    Это помещает панель действий под вкладками / панелью навигации. Видимо, это поведение "по замыслу" ... code.google.com/p/android/issues/detail?id=36191
  • 0
    гораздо лучше .. спасибо :)
Показать ещё 2 комментария
27

Вызов

mActionBar.setDisplayHomeAsUpEnabled(true);

в дополнение к,

mActionBar.setDisplayShowHomeEnabled(false);

скроет логотип, но отобразит значок "Дом как вверх".:)

  • 0
    Ни в коем случае это не отвечает на вопрос. Я знал об этой функции, но я просил XML!
  • 0
    @Hrafn - я думал, что XML был предпочтительным ответом, а не ЕДИНСТВЕННЫМ ответом. :( Я думаю, это все еще помогает людям. :)
15

Имейте в виду, что:

<item name="android:icon">@android:color/transparent</item>

Кроме того, ваши объекты параметров будут прозрачными.

  • 1
    идеальное решение
11
getActionBar().setIcon(android.R.color.transparent);

Это сработало для меня.

11
    //disable application icon from ActionBar
    getActionBar().setDisplayShowHomeEnabled(false);

    //disable application name from ActionBar
    getActionBar().setDisplayShowTitleEnabled(false);
  • 0
    Ни в коем случае это не отвечает на вопрос. Я знал об этой функции, но я просил XML!
9

вы также можете добавить код ниже в AndroidManifest.xml.

android:icon="@android:color/transparent"

Он будет работать нормально.

Но я обнаружил, что это создает проблему, так как значок запуска также становится прозрачным.

Итак, я использовал:

getActionBar().setIcon(new ColorDrawable(getResources().getColor(android.R.color.transparent)));

и он работал нормально.

Но если у вас более одного действия и вы хотите сделать значок на прозрачном мероприятии, тогда будет работать предыдущий подход.

9

Удалите или покажите заголовок, используя:

getActionBar().setDisplayShowTitleEnabled(true);

Удалите или покажите логотип, используя:

getActionBar().setDisplayUseLogoEnabled(false);

Удалить все:

getActionBar().setDisplayShowHomeEnabled(false);
  • 0
    Ни в коем случае это не отвечает на вопрос. Я знал об этой функции, но я просил XML!
  • 1
    Это помогло мне, так что спасибо @Tiago!
2

Я использовал это, и это сработало для меня.

        getActionBar().setIcon(
        new ColorDrawable(getResources().getColor(android.R.color.transparent)));
  • 0
    Ни в коем случае это не отвечает на вопрос. Я знал об этой функции, но я просил XML!
2
getActionBar().setIcon(new ColorDrawable(getResources().getColor(android.R.color.transparent)));
getActionBar().setDisplayHomeAsUpEnabled(true);
  • 0
    Добро пожаловать в переполнение стека! Обычно ответы, подобные вашим, считаются довольно низкого качества. Для дальнейшего использования вы должны добавить некоторые пояснения к предоставленному вами коду и лучше структурировать код (добавьте 4 пробела в начале каждой строки или выделите все это и щелкните символ {} над текстовым полем). Также, Вы должны уделять больше внимания дате вопроса (более года назад) и тому факту, что на него уже дан ответ (зеленый флажок). Удачи в программировании :)
  • 0
    Ни в коем случае это не отвечает на вопрос. Я знал об этой функции, но я просил XML!
1

перейдите в свой манифест, найдите тег приложения

  android:icon="@android:color/transparent"// simply add this on place of your icon

..... ... ...

1

Я думаю, что точный ответ: для api 11 или выше:

getActionBar().setDisplayShowHomeEnabled(false);

иначе:

getSupportActionBar().setDisplayShowHomeEnabled(false);

(потому что ему нужна библиотека поддержки.)

  • 0
    Ни в коем случае это не отвечает на вопрос. Я знал об этой функции, но я просил XML!
0

Ничто из вышеперечисленного не сработало.

Но это добилось цели:

override fun onCreate() {
    setContentView(R.layout.activity_main)

    setSupportActionBar(toolbar)
    toolbar.logo = null

(убран значок с панели инструментов)

0

Самый быстрый способ - изменить ваш Manifest.xml. Если, например, вы хотите удалить логотип активности "Активность" и оставить логотип в других действиях, вы можете сделать следующее:

<activity
      android:name=".home.XActivity"
      android:logo="@android:color/transparent"
      android:configChanges="orientation|keyboardHidden" />
 <activity
      android:name=".home.HomeActivity"
      android:configChanges="orientation|keyboardHidden" />
0

Перейдите в манифест и найдите свою активность, затем добавьте этот код:

android:theme="@android:style/Theme.NoTitleBar"

выше, спрячьте Actionbar.

Если вам нужна другая функция, вы можете увидеть другие параметры с помощью (CLR + SPC).

0

Ответ Qiqi Abaziz в порядке, но я все еще долгое время пытался заставить его работать с пакетом совместимости и применять стиль к правильным элементам. Кроме того, прозрачность-хак не нужна. Итак, вот полный пример работы для v8 и выше:

значения \styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MyActivityTheme" parent="@style/Theme.AppCompat">
        <item name="actionBarStyle">@style/NoLogoActionBar</item> <!-- pre-v11-compatibility -->
        <item name="android:actionBarStyle">@style/NoLogoActionBar</item>
    </style>
    <style name="NoLogoActionBar" parent="@style/Widget.AppCompat.ActionBar">
        <item name="displayOptions">showHome</item> <!-- pre-v11-compatibility -->
        <item name="android:displayOptions">showHome</item>
    </style>
</resources>

AndroidManifest.xml (оболочка)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">   
    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19"/>
    <application android:theme="@android:style/Theme.Light.NoTitleBar">
        <activity android:theme="@style/PentActivityTheme"/>
    </application>
</manifest>
-3

getSupportActionBar().setDisplayShowHomeEnabled(false); в вашей деятельности

Пример:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_layout);

    //in this line
    getSupportActionBar().setDisplayShowHomeEnabled(false);
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню