web-dev-qa-db-ja.com

Android立面影の方向を変える方法は?

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>
23
Valery Miller

私はこの方法が最良の解決策であると考えています: ドロップシャドウ付きの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>

また、このアプローチを使用しても互換性の問題はありません。

12
Valery Miller

この post で詳しく説明されているように、ビューのアウトラインプロバイダーを変更することで、ビューのドロップシャドウを変換したり、x方向やy方向に拡大したりできます。

2
Mihai

私が考える限り、自分で影を変えることはありません。 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

1
xxtesaxx