Я использую actionbarsherlock. Часть кода ниже отвечает за изменение фона на пользовательский.
<style name="Widget.Styled.ActionBar" parent="Widget.Sherlock.ActionBar">
<item name="background">@drawable/actionbar_bg</item>
<item name="android:background">@drawable/actionbar_bg</item>
<...>
</style>
<style name="Theme.MyApp" parent="@style/Theme.Sherlock.Light">
<item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
<item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
<..>
</style>
И это работает для actionbarsherlock (в версиях ниже сота). Но в ICS у меня есть тень под панелью действий, которая мне не нужна. Что это за стиль, чтобы он исчез?
getSupportActionBar().setElevation(0);
не работает. Итак, вы вставили<item name="android:windowContentOverlay">@null</item>
в свою тему приложения. У меня была похожая проблема. Теперь я их обоих. setElevation from и добавили элемент windowContentOverlay в тему приложения. setElevation работает для Android 5.0 и выше, в то время как другие работают для pre-lollipop. Ура!Для Android 5.0, если вы хотите установить его непосредственно в стиль, используйте:
и для поддержки совместимости библиотеки используйте:
Пример стиля для светлой темы AppCompat:
Затем примените этот пользовательский стиль ActionBar к вашей теме приложения:
Для Android до 5.0 добавьте это тоже в тему вашего приложения:
источник
windowContentOverlay
тему панели действий, а не тему приложения.android:elevation
для устройств Lollipop). Я не могу сделать это, используя этот подход. Я считаю, что это будет довольно прямо. Поставьте ненулевое значение для атрибутов высоты, и это будет так.android:windowContentOverlay
предварительно lollipop API? Я не могу скомпилировать, если мой minSDK предварительно lollipop, но цель 21?<style name="Theme.MyApp.ActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">
неstyle/
вparent
атрибуте.В Android 5.0 это изменилось, вы должны вызвать setElevation (0) на панели действий. Обратите внимание, что если вы используете библиотеку поддержки, вы должны вызывать ее следующим образом:
На него не влияет элемент стиля windowContentOverlay, поэтому никаких изменений в стилях не требуется
источник
добавить
app:elevation="0dp"
в AppBarLayout для скрытия тени в панели приложенийисточник
Если вы работаете с ActionBarSherlock
В вашей теме добавьте это:
источник
Вы должны установить
app:elevation="0dp"
в,android.support.design.widget.AppBarLayout
и тогда это работает.источник
но нет
работал для меня на Android L
источник
У меня такая же проблема, и я успешно решил эту проблему. Все, что вам нужно сделать, это просто изменить высоту на 0 с плавающей запятой в том действии, в котором вы хотите удалить высоту.
Если вы хотите изменить его в названном мероприятии,
MyActivity.java
вы должны получитьActionBar
первое.Сначала импортируйте
ActionBar
класспосле импорта вы должны инициализировать переменную панели действий и установить ее высоту на 0.
источник
Для разработчиков Xamarin, пожалуйста, используйте:
SupportActionBar.Elevation = 0;
дляAppCompatActivity
илиActionBar.Elevation = 0;
для некомпатных мероприятийисточник
Решение для Kotlin (Android 3.3, Kotlin 1.3.20)
источник
Попробуйте это мне помогло без смены темы. Поместите свой AppBarLayout в любой макет. Надеюсь, это поможет вам
источник
Для тех, кто работает с фрагментами, и он исчез после установки
toolbar.getBackground().setAlpha(0);
или любого исчезновения, я думаю, что вы должны довести свой AppBarLayout до последнего в xml, поэтому его Fragment затем AppBarLayout, а затем относительныйlayout / constraint / linear, который вы используете.источник
Добавьте это
toolbar.getBackground().setAlpha(0);
внутри метода OnCreate. Добавьте это:android:elevation="0dp" android:background="@android:color/transparent
в ваш XML-файл панели инструментов.источник