Я пытаюсь найти какой-то способ удаления значка/логотипа из панели действий, но единственное, что я нашел после часа поиска. SO, документация на Android и Google - как удалить строку заголовка в целом, Это не то, чего я хочу. Только хотите удалить значок/логотип из строки заголовка.
Кто-нибудь знает, как это сделать? Предпочтительно, я хотел бы сделать это в XML.
Если вы определили android:logo="..."
в теге <application>
вашего AndroidManifest.xml
, вам нужно использовать этот материал, чтобы скрыть значок:
<item name="logo">@android:color/transparent</item>
<item name="android:logo">@android:color/transparent</item>
Использование этих двух стилей правильно скрыло значок панели действий на 2.3 и 4.4 устройствах для меня (это приложение использует AppCompat).
Добавьте в свой стиль действия следующий код:
<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, и это работает отлично.
Если вам не нужен значок в конкретной активности.
getActionBar().setIcon(
new ColorDrawable(getResources().getColor(android.R.color.transparent)));
Это сработало для меня
getActionBar().setDisplayShowHomeEnabled(false);
Вызов
mActionBar.setDisplayHomeAsUpEnabled(true);
в дополнение к,
mActionBar.setDisplayShowHomeEnabled(false);
скроет логотип, но отобразит значок "Дом как вверх".:)
Имейте в виду, что:
<item name="android:icon">@android:color/transparent</item>
Кроме того, ваши объекты параметров будут прозрачными.
getActionBar().setIcon(android.R.color.transparent);
Это сработало для меня.
//disable application icon from ActionBar
getActionBar().setDisplayShowHomeEnabled(false);
//disable application name from ActionBar
getActionBar().setDisplayShowTitleEnabled(false);
вы также можете добавить код ниже в AndroidManifest.xml.
android:icon="@android:color/transparent"
Он будет работать нормально.
Но я обнаружил, что это создает проблему, так как значок запуска также становится прозрачным.
Итак, я использовал:
getActionBar().setIcon(new ColorDrawable(getResources().getColor(android.R.color.transparent)));
и он работал нормально.
Но если у вас более одного действия и вы хотите сделать значок на прозрачном мероприятии, тогда будет работать предыдущий подход.
Удалите или покажите заголовок, используя:
getActionBar().setDisplayShowTitleEnabled(true);
Удалите или покажите логотип, используя:
getActionBar().setDisplayUseLogoEnabled(false);
Удалить все:
getActionBar().setDisplayShowHomeEnabled(false);
Я использовал это, и это сработало для меня.
getActionBar().setIcon(
new ColorDrawable(getResources().getColor(android.R.color.transparent)));
getActionBar().setIcon(new ColorDrawable(getResources().getColor(android.R.color.transparent)));
getActionBar().setDisplayHomeAsUpEnabled(true);
перейдите в свой манифест, найдите тег приложения
android:icon="@android:color/transparent"// simply add this on place of your icon
..... ... ...
Я думаю, что точный ответ: для api 11 или выше:
getActionBar().setDisplayShowHomeEnabled(false);
иначе:
getSupportActionBar().setDisplayShowHomeEnabled(false);
(потому что ему нужна библиотека поддержки.)
Ничто из вышеперечисленного не сработало.
Но это добилось цели:
override fun onCreate() {
setContentView(R.layout.activity_main)
setSupportActionBar(toolbar)
toolbar.logo = null
(убран значок с панели инструментов)
Самый быстрый способ - изменить ваш 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" />
Перейдите в манифест и найдите свою активность, затем добавьте этот код:
android:theme="@android:style/Theme.NoTitleBar"
выше, спрячьте Actionbar
.
Если вам нужна другая функция, вы можете увидеть другие параметры с помощью (CLR + SPC).
Ответ 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>
getSupportActionBar().setDisplayShowHomeEnabled(false);
в вашей деятельности
Пример:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_layout);
//in this line
getSupportActionBar().setDisplayShowHomeEnabled(false);
}