2017-01-16 4 views
2

私のアプリの要件によると、カードビューの上にプレーンサイドが必要なので、上側から影を取り除き、別のビューに触れる必要があります。片面からCardViewの影を取り除く

私は

card_view試してみました:cardElevationは= "0dp"

をしかし、それは私には有用ではないですので、それは、すべての側面からのシャドウを削除しました。

CardViewと画像ビューに1つずつ負のマージン(-5dp)を適用しましたが、CardViewが画像の下に来ていないので、私にとってはうまくいきません。

アプリケーションのUI要件は、いずれかがこの問題を解決するのに役立ちますの提案を与えることができ、この

UI Like this

のようなものですか?

答えて

2

カードビューのようにカスタムシャドウを作成することで、この問題は発生しますが、トップシャドウはありません。

Drawableフォルダに1つのXMLファイルを作成し、このコードを内部に置き、バックグラウンドで設定します。

アンドロイド:背景= "描画可能/ 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軸のカードビューよりも高い別のビューを作成することで効果を得ることができます。その後、outlineProviderプロパティをnoneに設定してシャドーエフェクトを無効にし、CardViewの目的のエッジに配置する必要があります。

<RelativeLayout> 
    <CardView/> 
    <View 
     .. 
     android:outlineProvider="none" 
     android:translationZ="12dp" 
     android:background="@color/cardViewBackgroundColor> 
    </View> 
</RelativeLayout> 
関連する問題