android:高程只在底面有阴影效果,如何使影子效果显示在顶端?

我在一个活动的底部使用了一个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"/>
有一个技巧可以用来显示视图上方的阴影。

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

<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,即使没有设置背景设置,外部布局也会投射阴影。

此外,我们指定负余量以补偿由填充创建的偏移量。根据用例,我们可以省略。

但注意:如果我们将视图转换得太多,则会出现一些渲染工件变得可见:

android elevation shadow offset examples

Source of this example on Github

http://stackoverflow.com/questions/27741567/androidelevation-only-have-shadow-effects-on-the-bottom-side-how-to-make-the-s

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:android:高程只在底面有阴影效果,如何使影子效果显示在顶端?