webentwicklung-frage-antwort-db.com.de

Android CardView mit abgerundeten Ecken zeigt graue Ecken

Ich blase ein benutzerdefiniertes Layout mit CardView im Layout auf. Die abgerundeten Ecken werden wie erwartet angezeigt, aber hinter den Ecken bekomme ich auch einen grauen Hintergrund.

Der Code ist einfach und verwendet eine CardView mit Eckenradius und Hintergrundfarbe. Ich habe versucht, den transparenten Hintergrund einzustellen, funktioniert aber nicht. Wenn ich jedoch eine andere undurchsichtige Farbe einstelle, wird diese in den Ecken angezeigt.

Code ist beigefügt.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:background="@Android:color/transparent">

    <Android.support.v7.widget.CardView
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        app:cardBackgroundColor="@Android:color/white"
        app:cardCornerRadius="6dp"
        app:cardElevation="5dp">

        <RelativeLayout
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:background="@Android:color/transparent">

            <TextView
                Android:id="@+id/tvProgress"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:layout_alignParentLeft="true"
                Android:layout_alignParentStart="true"
                Android:layout_centerVertical="true"
                Android:layout_toLeftOf="@+id/ivIcon"
                Android:layout_toStartOf="@+id/ivIcon"
                Android:background="@Android:color/transparent"
                Android:padding="@dimen/elementPaddingSmall"
                Android:text="Initial Discussion"
                Android:textAppearance="?android:attr/textAppearanceMedium"
                Android:textColor="@Android:color/black" />

            <ImageView
                Android:id="@+id/ivIcon"
                Android:layout_width="50dp"
                Android:layout_height="50dp"
                Android:layout_alignParentEnd="true"
                Android:layout_alignParentRight="true"
                Android:background="@color/lightBrown"
                Android:scaleType="centerInside"
                Android:src="@drawable/ic_checkmark_circle" />
        </RelativeLayout>


    </Android.support.v7.widget.CardView>
</RelativeLayout>

Ergebnis:

 enter image description here

7
Prasad Pawar

Es ist wegen des Schattens, Sie müssen dem Kartenblick Raum geben, um den vollen Schatten zu zeigen. Fügen Sie Android:layout_margin="5dp" zu CardView hinzu, und Sie werden sehen, dass die "graue" Farbe Schatten ist. 

Lösung fügt CardView app:cardUseCompatPadding="true" hinzu und gibt den erforderlichen Abstand an.

10
Misha Akopov

Versuche dies...

Setzen Sie den Wert 0 einfach auf app: cardElevation

.....
<Android.support.v7.widget.CardView
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    app:cardBackgroundColor="@Android:color/white"
    app:cardCornerRadius="6dp"
    app:cardElevation="0dp">
.....

ODERSie können cardView.setCardElevation (0) aufrufen, um den Schatten programmgesteuert zu deaktivieren.

Entfernen Sie die übergeordnete RelativeLayout, die die CardView-Datei umschließt, und Sie können loslegen. Genau wie dieser:

<?xml version="1.0" encoding="utf-8"?>
<Android.support.v7.widget.CardView
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    app:cardBackgroundColor="@Android:color/white"
    app:cardCornerRadius="6dp"
    app:cardElevation="5dp">

    <RelativeLayout
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:background="@Android:color/transparent">

        <TextView
            Android:id="@+id/tvProgress"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_alignParentLeft="true"
            Android:layout_alignParentStart="true"
            Android:layout_centerVertical="true"
            Android:layout_toLeftOf="@+id/ivIcon"
            Android:layout_toStartOf="@+id/ivIcon"
            Android:background="@Android:color/transparent"
            Android:padding="@dimen/elementPaddingSmall"
            Android:text="Initial Discussion"
            Android:textAppearance="?android:attr/textAppearanceMedium"
            Android:textColor="@Android:color/black"/>

        <ImageView
            Android:id="@+id/ivIcon"
            Android:layout_width="50dp"
            Android:layout_height="50dp"
            Android:layout_alignParentEnd="true"
            Android:layout_alignParentRight="true"
            Android:background="@color/lightBrown"
            Android:scaleType="centerInside"
            Android:src="@drawable/ic_checkmark_circle"/>
    </RelativeLayout>


</Android.support.v7.widget.CardView>
0
Pulak

Wenn jemand das Problem hat, wenn die Farbe der Kanten dunkler ist, als Sie festgelegt haben, kann dies passieren, wenn Sie die Farbe im #AARRGGBB-Format festlegen. Um dieses Problem zu beheben, legen Sie einfach die Farbe im normalen #RRGGBB-Format fest.

0
ivan8m8