透明 AppBarLayout

Jak*_*ber 9 android material-design androidx

我正在开发一个应用程序,我想要一个透明的工具栏 (AppBarLayout),但仍然可以看到导航图标按钮。不幸的是,我能做到的最好的是透明的工具栏,它仍然会降低阴影(高程)。

我有一个全屏对话框片段,请参阅样式:

<style name="FullScreenImageStyle" parent="AppTheme">
        <item name="android:windowNoTitle">true</item>

        <item name="android:windowFullscreen">false</item>
        <item name="android:windowIsFloating">false</item>


        <item name="android:windowEnterAnimation">@anim/slide_up</item>
        <item name="android:windowExitAnimation">@anim/slide_down</item>
        <item name="android:windowTranslucentStatus">true</item>
        <item name="android:windowTranslucentNavigation">true</item>
        <item name="windowActionBarOverlay">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
    </style>
Run Code Online (Sandbox Code Playgroud)

片段的布局如下所示(这里只是开头):

<androidx.coordinatorlayout.widget.CoordinatorLayout
        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="match_parent"
        android:fitsSystemWindows="true">

    <com.google.android.material.appbar.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@android:color/transparent">

        <androidx.appcompat.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"/>

    </com.google.android.material.appbar.AppBarLayout>
Run Code Online (Sandbox Code Playgroud)

稍后在初始化对话框片段时,我设置了全屏样式和导航图标的资源 ID。

结果看起来像这样。注意工具栏在屏幕顶部的阴影: 在此处输入图片说明

任何想法如何解决这个问题,请?

Has*_*cuk 12

尝试这个 ;

 android:background="@color/transparent"
 android:elevation="0dp"
 app:elevation="0dp"

<color name="transparent">#00000000</color>
Run Code Online (Sandbox Code Playgroud)

  • 它甚至会导致导航图标不可见。 (3认同)

Raf*_*ael 8

使用此代码

 <com.google.android.material.appbar.AppBarLayout
        android:id="@+id/appBarLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@null">
Run Code Online (Sandbox Code Playgroud)
appBarLayout.setOutlineProvider(null)
Run Code Online (Sandbox Code Playgroud)


Jak*_*ber 5

最后我通过删除AppBarLayout、将工具栏设置为透明背景并添加 TranslationZ 解决了这个问题,我认为这有点hacky。

这是供参考的代码:

<androidx.coordinatorlayout.widget.CoordinatorLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true">

    <androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@android:color/transparent"
            android:translationZ="2dp"
            android:fitsSystemWindows="true"/>

    <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">


        <!-- Some other layouts -->

    </androidx.constraintlayout.widget.ConstraintLayout>

</androidx.coordinatorlayout.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)