2017-01-16 6 views
2

В соответствии с моим требованием ui для пользователя требуется простая сторона сверху карты, поэтому необходимо удалить тень с верхней стороны и коснуться другого вида.Удалить тень CardView с одной стороны

Я попытался

card_view: cardElevation = "0dp"

но удаляется тень от всех сторон, так что это не полезно для меня.

Я попробовал отрицательный запас (-5dp), примененный к CardView и представлению изображения один за другим, но все время CardView попадает под изображение не под изображение, поэтому оно не работает для меня.

App требования пользовательский интерфейс, как этот

UI Like this

Может ли один дать предложения действительно помогают решить эту проблему?

ответ

2

Я получаю эту проблему, создавая пользовательский фон, похожий на вид карты, но без верхней тени.

Создайте один файл 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> 
Смежные вопросы