Android appbarlayout 高度出现在状态栏中
Android appbarlayout elevation appears in status bar
如何消除状态栏中的提升?如果我在 AppbarLayout 中将 app:elevation 设置为 0dp,则高度不会再出现在状态栏中,但也不会低于 AppbarLayout。
如何只获取 AppbarLayout 下的高度?
这是我的意思的截图:puush link,注意状态栏中的阴影:(
谢谢!
我们担心的是状态栏透明时 AppBarLayout
可见的阴影。拥有一个不透明的状态栏并不总是可行的。这发生在 Lollipop 及更高版本上只是因为动态阴影渲染。在棉花糖上,错误的阴影看起来更糟。
最佳解决方案
您的根布局应始终具有 android:fitsSystemWindows="true"
,否则您的 UI 将不会在状态栏后面绘制。
现在将 AppBarLayout
包裹在另一个具有 android:fitsSystemWindows="false"
的 CoordinatorLayout
中。这将防止阴影溢出到状态栏
其他解决方法(不推荐)
在您的样式中删除 statusBarColor:
<item name="android:statusBarColor">@android:color/transparent</item>
所以你的主题是:
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
</style>
您也可以简单地在 appbarlayout 上设置 app:elevation="0dp",但这也会消除底部的阴影。
如何消除状态栏中的提升?如果我在 AppbarLayout 中将 app:elevation 设置为 0dp,则高度不会再出现在状态栏中,但也不会低于 AppbarLayout。
如何只获取 AppbarLayout 下的高度?
这是我的意思的截图:puush link,注意状态栏中的阴影:(
谢谢!
我们担心的是状态栏透明时 AppBarLayout
可见的阴影。拥有一个不透明的状态栏并不总是可行的。这发生在 Lollipop 及更高版本上只是因为动态阴影渲染。在棉花糖上,错误的阴影看起来更糟。
最佳解决方案
您的根布局应始终具有 android:fitsSystemWindows="true"
,否则您的 UI 将不会在状态栏后面绘制。
现在将 AppBarLayout
包裹在另一个具有 android:fitsSystemWindows="false"
的 CoordinatorLayout
中。这将防止阴影溢出到状态栏
其他解决方法(不推荐)
在您的样式中删除 statusBarColor:
<item name="android:statusBarColor">@android:color/transparent</item>
所以你的主题是:
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
</style>
您也可以简单地在 appbarlayout 上设置 app:elevation="0dp",但这也会消除底部的阴影。