从一侧删除CardView阴影

时间:2017-01-16 06:03:21

标签: android android-layout layout android-cardview cardview

根据我的app ui要求,它需要在cardview顶部的平面,因此,它需要从上方移除阴影并触摸到另一个视图。

我试过

  

card_view:cardElevation =" 0dp"

但它从所有方面都删除了阴影,因此对我没用。

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

App ui要求就像这样

UI Like this

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

2 个答案:

答案 0 :(得分:2)

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

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

  

机器人:背景=" @可绘制/ custom_cardview_no_top_shadow"

app.factory ("StorageService", function ($localStorage) {

var _getAll = function () {
  return $localStorage.things;
};

var _add = function (thing) {
  $localStorage.things.push(thing);
}

var _remove = function (thing) {
  $localStorage.things.splice($localStorage.things.indexOf(thing), 1);
}

return {
    getAll: _getAll,
    add: _add,
    remove: _remove
  };
})

以下是卡片视图的颜色

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

答案 1 :(得分:0)

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

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