Свойство Elevation не работает в api ›= 27

Я устанавливаю свойство высоты в моем AppBarLayout, и оно работает с api 21 до 26, но тень не отображается на устройстве, эмулятор работает на api> = 27.
Произошли ли какие-либо изменения с AppBarLayout или свойством высоты?

вот как я использую код -

<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.appbar.AppBarLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:elevation="8dp"
    app:theme="@style/ThemeOverlay.MaterialComponents.Dark">

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        app:popupTheme="@style/ThemeOverlay.MaterialComponents.Light"
        app:theme="@style/ThemeOverlay.MaterialComponents.Dark.ActionBar" />

</com.google.android.material.appbar.AppBarLayout>

person DarShan    schedule 12.04.2019    source источник
comment
попробуйте добавить нижнее поле, возможно, там просто нет места для отображения тени.   -  person Joachim Haglund    schedule 12.04.2019
comment
@JoachimHaglund пробовал, не работает ... похоже, тени панели инструментов не отображаются на api ›= 27.   -  person DarShan    schedule 12.04.2019
comment
Попробуйте установить высоту на панели инструментов вместо AppBarLayout (используйте app: elevation)   -  person Derek K    schedule 12.04.2019


Ответы (3)


Попробуйте использовать атрибут app: elevation с пространством имен в качестве приложения

<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.appbar.AppBarLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:elevation="8dp"
    app:theme="@style/ThemeOverlay.MaterialComponents.Dark"/>
person Aamir Khan    schedule 12.04.2019

  • Вы пробовали StateListAnimator.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { StateListAnimator stateListAnimator = new StateListAnimator(); stateListAnimator.addState(new int[0], ObjectAnimator.ofFloat(appBarLayout, "elevation", 0.1f)); appBarLayout.setStateListAnimator(stateListAnimator); }

OR

  • Попробуйте установить фон

android:background="@android:color/white" android:elevation="10dp"

Надеюсь, что это работает !

person abhinandan sharma    schedule 12.04.2019
comment
Да, никакого эффекта даже после использования пространства имен app. - person DarShan; 12.04.2019
comment
Хорошо, позволь мне проверить еще кое-что - person abhinandan sharma; 12.04.2019
comment
android: outlineProvider = bounds попробуйте это - person abhinandan sharma; 12.04.2019
comment
пробовал установить фон ?? android: background = @ android: color / white android: elevation = 10dp - person abhinandan sharma; 12.04.2019
comment
Если я установлю белый фон для AppBar и Toolbar, я вижу тень ... но я программно меняю цвет фона панели инструментов, поэтому не могу создать тень. - person DarShan; 12.04.2019
comment
Давайте продолжим это обсуждение в чате. - person abhinandan sharma; 12.04.2019

удалить <application android:hardwareAccelerated="false"/>, если он существует в AndroidManifest.xml

person asannov    schedule 19.02.2021