android:立面只在底部有阴影效果,如何使阴影效果显示在顶部?

android:立面只在底部有阴影效果,如何使阴影效果显示在顶部?,android,material-design,shadow,android-framelayout,android-elevation,Android,Material Design,Shadow,Android Framelayout,Android Elevation,我在活动底部使用框架布局,为了在片段上显示阴影效果,我添加了android:elevation。但是阴影效果只出现在底部而不是顶部,有人能给我一些建议吗 <FrameLayout android:id="@+id/bottom_container" android:background="#00737f" android:layout_width="match_parent" android:layout_height="50dp" android:

我在活动底部使用框架布局,为了在片段上显示阴影效果,我添加了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"/>

有一种技巧可以用来在视图上方显示阴影

基本上,我们必须使用两个嵌套布局,其中外部布局投射具有
高程的阴影,内部布局设置
背景。
然后,通过将
填充设置为外部布局,我们可以向下移动内部布局,而不移动阴影,从而使更多阴影可见:

<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>

这里重要的一点是属性
outlineProvider
,它是使外部布局即使没有背景设置也会投射阴影所必需的

此外,我们还指定一个负的
边距
,以补偿填充产生的偏移。根据用例的不同,我们可以省略它

但请注意:如果视图移动过多,某些渲染瑕疵会变得可见: