Android CardView со странной рамкой при прозрачности

У меня возникли проблемы с прозрачностью CardView и card_elevation. Попытка использовать прозрачный CardView приводит к следующему результату:

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

Без прозрачности:

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

То, что я пытаюсь получить, выглядит примерно так:

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

Вот мой xml:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@mipmap/eifell"
    android:padding="10dp"
    tools:context=".MainActivity">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="5dp"
        android:background="@android:color/transparent">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.v7.widget.CardView
                android:id="@+id/newsCardView"
                android:layout_width="match_parent"
                android:layout_height="175dp"
                card_view:cardBackgroundColor="#602B608A"
                card_view:cardElevation="5dp">

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:background="@android:color/transparent">
                </LinearLayout>

            </android.support.v7.widget.CardView>

        </LinearLayout>
    </ScrollView>

</RelativeLayout>

person Isquierdo    schedule 25.07.2015    source источник
comment
Вы когда-нибудь получали обходной путь для этого? Похоже, карты не поддерживают прозрачность фона: code.google. .com/p/android/issues/detail?id=78061   -  person Steve Blackwell    schedule 26.09.2015
comment
Привет, Стив, нет, я просто использую RelativeLayout с прозрачным фоном без тени (высоты). Когда что-то найду, отпишусь где.   -  person Isquierdo    schedule 27.09.2015
comment
@SteveBlackwell Это правильный ответ на этот вопрос. Спасибо.   -  person Vaibhav Jani    schedule 18.10.2016
comment
Вопрос: Почему CardViews на самом деле ведут себя таким образом? Есть ли проблема с Github по этому поводу?   -  person Taslim Oseni    schedule 05.09.2019


Ответы (3)


Я знаю, что немного опоздал, но это только из-за повышения карты по умолчанию. Установите его на ноль, чтобы решить вашу проблему.

app:cardElevation="0dp"
person Prateek Gupta    schedule 11.12.2018
comment
Очень неудобно иметь это по умолчанию. они просто потратили 5-6 моих часов только на эту строчку. и спасибо за это - person Anonymous-E; 13.07.2019
comment
но как удержать тень? - person Pedro Antonio; 19.06.2020
comment
Тогда я скажу, что вы не можете удалить повышение, и тогда вам придется воспользоваться помощью ViewOutlineProviders, чтобы решить эту проблему. - person Prateek Gupta; 30.06.2020

Попробуйте этот код:

 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:id="@+id/newsCardView"
        android:layout_width="175dp"
        android:layout_height="175dp"
        card_view:cardBackgroundColor="#602B608A"
        card_view:cardCornerRadius="0dp"
        card_view:cardElevation="5dp">

    </android.support.v7.widget.CardView>

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageView"
        android:layout_gravity="left|top"
        android:src="@drawable/fake_image" /> //REPLACE THIS WITH YOUR IMAGE
</FrameLayout>

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

Если это не помогло, предоставьте весь xml-код вашего макета

person Sergey Zabelnikov    schedule 25.07.2015
comment
На моем устройстве все выглядит отлично, попробуйте обновить библиотеку cardView до com.android.support:cardview-v7:22.1.1 - person Sergey Zabelnikov; 25.07.2015
comment
Я уже использую эту версию, какую версию Android вы тестировали? - person Isquierdo; 25.07.2015
comment
Android 4.4.2 и Android 5.1.1 - person Sergey Zabelnikov; 25.07.2015
comment
Можете ли вы отправить мне скриншот? На кардвью не странная доска? спасибо - person Isquierdo; 25.07.2015
comment
@StealthRabbi не так о простых ответах? - person Shujito; 20.01.2017
comment
@Shujito Это нелегко понять, и нет объяснения предоставленного кода или того, каким образом это улучшение по сравнению с тем, что опубликовал OP. - person Stealth Rabbi; 23.01.2017
comment
если вы измените cardCornerRadius, вы увидите артефакт, о котором говорит cRobot - person miv; 16.02.2018
comment
установка cardElevation на 0 удалила границу в моем случае - person BiGGZ; 26.04.2018

У меня была аналогичная проблема. Однако все заработало, когда я удалил строку cardBackgroundColor и использовал android:background="@color/transparent. Когда вы добавляете или устанавливаете cardBackgroundColor, по умолчанию появляется небольшое возвышение, которое вызывает эффект непрозрачности тени.

person Vinod Kumar    schedule 02.04.2021