2017-01-16 101 views
2

根据我的应用程序ui要求,它需要在cardview上方显示简单的一面,因此需要从上侧删除阴影并触摸另一个视图。从一侧删除CardView阴影

我试图

card_view:cardElevation = “0dp”

,但它从所有侧去除阴影,所以它不是对我很有用。

我尝试将负边距(-5dp)逐个应用于CardView和图像视图,但所有时间CardView都在图像下方过来,所以它不适用于我。

应用程序的用户界面的要求是这样的

UI Like this

任何一个可以给做有助于解决这个建议吗?

回答

2

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

在可绘制文件夹中创建一个XML文件,并将此代码放入并设置为背景。

的android:背景= “@绘制/ 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> 

下面是卡图的颜色

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

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

<RelativeLayout> 
    <CardView/> 
    <View 
     .. 
     android:outlineProvider="none" 
     android:translationZ="12dp" 
     android:background="@color/cardViewBackgroundColor> 
    </View> 
</RelativeLayout>