Android:elevation = "4dp"のFrameLayoutがあります。この高度の影が下を向いています。影の向きを上に変えたい。
<FrameLayout
Android:id="@+id/container"
Android:layout_width="match_parent"
Android:layout_height="100dp"
Android:elevation="10dp"
Android:layout_marginBottom="100dp"
Android:background="@color/ColorPrimary"
Android:layout_alignParentBottom="true"
Android:layout_alignParentLeft="true"
Android:layout_alignParentStart="true">
</FrameLayout>
私はこの方法が最良の解決策であると考えています: ドロップシャドウ付きのAndroidボトムナビゲーションバー ありがとう、Alexander Bilchuk。
ソリューション:
シンプルなビューとその背景を使用して、ビューの真上に独自のシャドウを描画できます。
<View
Android:layout_width="match_parent"
Android:layout_height="4dp"
Android:layout_above="@id/bottom_bar"
Android:background="@drawable/shadow"/>
drawable/shadow.xml:
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<gradient
Android:startColor="#1F000000"
Android:endColor="@Android:color/transparent"
Android:angle="90" />
</shape>
また、このアプローチを使用しても互換性の問題はありません。
この post で詳しく説明されているように、ビューのアウトラインプロバイダーを変更することで、ビューのドロップシャドウを変換したり、x方向やy方向に拡大したりできます。
私が考える限り、自分で影を変えることはありません。 Androids Material Designでは、影は要素を上げる量によって自動的に決定されます。
この質問によると https://graphicdesign.stackexchange.com/questions/80644/where-are-the-light-sources-located-in-material-design 光源は
高度45度、角度90度
マテリアルデザインの全体的な一貫性が損なわれるため、実際には別のシャドウを使用しないでください。次に、あなたがしなければならない唯一のことはあなたの要素を上げることです。たぶん、マテリアルデザインガイドラインをもう一度読む必要があります。 https://material.io/guidelines/material-design/environment.html#environment-light-shadow