web-dev-qa-db-ja.com

Android角が丸いCardViewは灰色の角を表示します

レイアウト内でCardViewを使用してカスタムレイアウトを拡張しています。丸みを帯びた角は期待どおりに表示されますが、角の後ろに灰色の背景も表示されます。

コードは単純で、角の半径と背景色のCardViewを使用します。透明な背景を設定しようとしましたが、機能しません。ただし、別の不透明な色を設定すると、隅に表示されます。

コードが添付されています。

<?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>

結果:

enter image description here

14
Prasad Pawar

影が原因で、完全な影を表示するにはカードビューにスペースを与える必要があります。 Android:layout_margin="5dp"CardViewに追加すると、「灰色」の色が陰影になります。

解決策app:cardUseCompatPadding="true"をCardViewに追加し、必要な間隔を与えます。

21
Misha Akopov

これを試して...

0の値を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">
.....

[〜#〜] or [〜#〜] cardView.setCardElevation(0)を呼び出して、プログラムでシャドウを無効にできます。

RelativeLayoutをラップしている親CardViewを削除すると、準備完了です。ちょうどこのような:

<?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

エッジの色が設定した値よりも暗いのときに誰かが問題に直面した場合、#AARRGGBB形式で色を設定すると発生する可能性があります。この問題を解決するには、通常の#RRGGBB形式で色を設定するだけです。

0
ivan8m8