3

根据我的应用程序 ui 要求,它需要卡片视图顶部的平面,因此,它需要从上侧移除阴影并触摸到另一个视图。

我试过了

card_view:cardElevation="0dp"

但它从四面八方消除了阴影,所以它对我没有用。

我尝试将负边距(-5dp)一一应用于 CardView 和图像视图,但一直以来 CardView 都是在图像上而不是在图像下方,所以它对我不起作用。

App ui要求是这样的

像这样的用户界面

任何人都可以提供帮助解决这个问题的建议吗?

4

2 回答 2

3

我通过创建自定义背景看起来像卡片视图但没有顶部阴影来解决这个问题。

在 drawable 文件夹中创建一个 XML 文件,并将此代码放入其中并将其设置为后台。

android:background="@drawable/custom_cardview_no_top_shadow"

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

<item>
    <shape>
        <padding android:top="0dp" android:right="10dp" android:bottom="5dp" android:left="10dp" />
        <solid android:color="@color/transparent" />
    </shape>
</item>

<item>
    <shape>
        <padding android:top="0dp" android:right="0dp" android:bottom="1dp" android:left="0dp" />
        <solid android:color="@color/card_shadow_1" />
        <corners android:radius="0dp" />
    </shape>
</item>
<item>
    <shape>
        <padding android:top="0dp" android:right="0dp" android:bottom="1dp" android:left="0dp" />
        <solid android:color="@color/card_shadow_2" />
        <corners android:radius="0dp" />
    </shape>
</item>
<!-- Background -->
<item>
    <shape >
        <solid android:color="@color/card_background" />
        <corners android:radius="0dp" />
    </shape>
</item>
</layer-list>

这是卡片视图的颜色

<!-- card colors -->
<color name="card_background">#ffffff</color>
<color name="card_shadow_1">#d4d4d4</color>
<color name="card_shadow_2">#dddddd</color>
<color name="transparent">#00000000</color>
于 2017-03-28T10:57:50.467 回答
0

您可以通过在 z 轴上创建另一个高于 cardview 的视图来实现这种效果。之后,您需要将其outlineProvider属性设置none为禁用阴影效果并将其放置到 CardView 所需的边缘。

<RelativeLayout>
   <CardView/>
   <View
       ..
       android:outlineProvider="none"
       android:translationZ="12dp"
       android:background="@color/cardViewBackgroundColor>
   </View>
</RelativeLayout>
于 2017-08-25T09:38:06.557 回答