Повышение Android View в CardView не отображается

У меня есть RelativeLayout внутри CardView, который я хочу поднять в Android Lollipop, но высота не отображается (тень не отображается):

введите здесь описание изображения

Мой файл макета:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:android.support.v7.cardview="http://schemas.android.com/apk/res-auto"
    style="@style/CardViewStyle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:elevation="5dp"
    android:orientation="horizontal"
    android.support.v7.cardview:cardElevation="5dp">

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/list_selector"
    android:paddingBottom="5dp">

    <ImageView
        android:id="@+id/article_thumb"
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:layout_alignParentTop="true"
        android:contentDescription="@string/app_name"
        android:scaleType="centerCrop" />

    <TextView
        android:id="@+id/article_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/article_thumb"
        android:layout_marginEnd="10dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginStart="10dp"
        android:ellipsize="middle"
        android:linksClickable="false"
        android:longClickable="false"
        android:text="@string/title"
        android:textAppearance="@style/TextAppearance.AppCompat.Title"
        android:textColor="@color/black" />

    <TextView
        android:id="@+id/article_date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/article_title"
        android:layout_alignStart="@+id/article_title"
        android:layout_below="@+id/article_title"
        android:layout_marginTop="10dp"
        android:text="@string/date"
        android:textAppearance="@style/TextAppearance.AppCompat.Light.Widget.PopupMenu.Small"
        android:textColor="@color/gray" />

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignEnd="@+id/article_title"
        android:layout_alignRight="@+id/article_title"
        android:layout_below="@+id/article_title"
        android:layout_marginTop="10dp"
        android:elevation="30dp"
        android:translationZ="30dp">

        <ImageView
            android:id="@+id/redbubble"
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:layout_gravity="center"
            android:contentDescription="@string/app_name"
            android:scaleType="centerCrop"
            android:src="@drawable/redbubble" />

        <TextView
            android:id="@+id/article_comment_bubble"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:textAppearance="@style/TextAppearance.AppCompat.Small"
            android:textColor="@color/white" />
    </RelativeLayout>

</RelativeLayout>

So inside this layout I added this two lines to the RelativeLayout to make the elevation:

android:elevation="30dp"
android:translationZ="30dp"

Любая идея, почему это не показано? На данный момент я тестирую его с помощью эмулятора, используя Android API 21 (Lollipop).


comment
Вы пытаетесь отбросить тень от этой диалоговой формы пузыря? Если это так, это не сработает, потому что тени поддерживаются только для выпуклых форм. Однако вы можете попробовать установить поставщик контуров для формы с закругленными углами.   -  person alanv    schedule 17.12.2014
comment
Да, я хочу иметь тень для этой формы пузыря.   -  person Mokkapps    schedule 17.12.2014
comment
Попробуйте решение по этой ссылке stackoverflow.com/a/27900541/1972566   -  person Ravi    schedule 29.01.2015
comment
в моем случае это был прозрачный фон вида с возвышением   -  person Ivan Vazhnov    schedule 29.06.2015


Ответы (5)


В корневом макете в xml нужно

xmlns:card_view="http://schemas.android.com/apk/res-auto"

ниже код для кардвью

card_view:cardElevation="5dp"
person Rahul Ahuja    schedule 22.05.2015

Тень не отображается, потому что они нарисованы за пределами RelativeLayout, а представление обрезается до его границы.

Добавьте android:clipChildren="false" к родителю вашего RelativeLayout или добавьте небольшое количество отступов к вашему представлению и установите android:clipToPadding="false"

person pdegand59    schedule 17.12.2014
comment
Спасибо за быстрый ответ. Если я использую android:clipChildren="false", то весь мой макет выходит за границы, поэтому я попробовал второй подход и добавил android:padding="5dp" и android:clipToPadding="false" в свой RelativeLayout. Но тень по-прежнему не отображается. Я делаю что-то неправильно? - person Mokkapps; 17.12.2014

Вы должны добавить свойство android:elevation в представление изображений redbubble. Чтобы просмотреть тень элемента, вы должны добавить android:elevation в это представление.

Я бы посоветовал вам изменить изображение с красным пузырем на следующее:

    <ImageView
        android:id="@+id/redbubble"
        android:layout_width="25dp"
        android:layout_height="25dp"
        android:layout_gravity="center"
        android:contentDescription="@string/app_name"
        android:scaleType="centerCrop"
        android:elevation="2dp"
        android:src="@drawable/redbubble" />
person ch3tanz    schedule 18.12.2014
comment
К сожалению, это не работает. Я думаю, что ответ от alanv в основном посте описывает проблему - person Mokkapps; 18.12.2014
comment
Вы можете добавить собственную тень для красного пузыря и установить ее в качестве фона. android:background=@drawable/myCustomShadowShape /› - person ch3tanz; 18.12.2014

Я заметил ту же проблему, и высота не отображается, потому что строка:

android:layout_below="@+id/...."

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

person Taras Okunev    schedule 15.04.2015

удалять

android:hardwareAccelerated="false" from manifest
person Amelia Laila    schedule 25.05.2017
comment
Хотя этот код может ответить на вопрос, предоставляя дополнительный контекст относительно как и/или почему это решает проблему, повысит ценность ответа в долгосрочной перспективе. Помните, что вы отвечаете на вопрос читателей в будущем, а не только того, кто задает сейчас! Пожалуйста, отредактируйте свой ответ, чтобы добавить объяснение и указать, какие ограничения и предположения применяются. Также не помешает упомянуть, почему этот ответ более уместен, чем другие. - person Dev-iL; 25.05.2017