web-dev-qa-db-ja.com

Android appbarlayoutの標高がステータスバーに表示されます

ステータスバーの標高を取り除くにはどうすればよいですか? AppbarLayoutでapp:elevationを0dpに設定すると、標高はステータスバーに表示されなくなりますが、AppbarLayoutの下にも表示されなくなります。

AppbarLayoutの下で標高を取得するにはどうすればよいですか?

これが私の意味のスクリーンショットです: puush link 、ステータスバーの影に注意してください:(

ありがとう!

19
Joestoen

私たちの懸念は、ステータスバーが透明なときに見えるAppBarLayoutの影についてです。不透明なステータスバーを持つことは常に実行可能ではありません。これは、動的シャドウレンダリングが原因でのみ、Lollipop以上で発生します。マシュマロでは、間違った影がさらに悪化します。

最良の解決策

ルートレイアウトには常にAndroid:fitsSystemWindows="true"が必要です。そうでない場合、UIはステータスバーの後ろに描画されません。

次に、AppBarLayoutAndroid: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"を作成することもできますが、これにより下部の影も削除されます。

24
anandbibek