android:提升底部只有阴影效果,如何让阴影效果显示在顶部?

Jay*_*yce 29 android shadow material-design android-elevation android-framelayout

我在活动的底部使用了framelayout,为了显示片段上的阴影效果,我添加了android:elevation.但阴影效果只出现在底部不在顶部,任何人都可以给我一些建议吗?

<FrameLayout
    android:id="@+id/bottom_container"
    android:background="#00737f"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_gravity="bottom"
    android:elevation="4dp"
    android:layout_alignParentBottom="true"
    android:layout_marginBottom="50dp"/>
Run Code Online (Sandbox Code Playgroud)

Flo*_*ern 28

有一个技巧可用于在视图上方显示阴影.

基本上我们必须使用两个嵌套的布局,其中外部布局使用a投射阴影,elevation内部布局设置background.然后通过设置一个padding外部布局,我们可以向下移动内部布局,而不移动阴影,因此更多的阴影变得可见:

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_alignParentBottom="true"
    android:layout_marginBottom="50dp"
    android:elevation="4dp"
    android:outlineProvider="bounds"
    android:paddingTop="2dp"
    android:layout_marginTop="-2dp">

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#00737f">

        <!-- content -->

    </FrameLayout>

</FrameLayout>
Run Code Online (Sandbox Code Playgroud)

这里最重要的是属性outlineProvider,即使没有背景设置也需要使外部布局投射阴影.

此外,我们指定一个负数margin来补偿填充所产生的偏移量.根据用例,我们可以省略.

但是注意:如果我们过多地移动View,一些渲染工件会变得可见:

android高程阴影偏移示例

Github上这个例子的来源