レイアウト内で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>
結果:
影が原因で、完全な影を表示するにはカードビューにスペースを与える必要があります。 Android:layout_margin="5dp"
をCardViewに追加すると、「灰色」の色が陰影になります。
解決策はapp:cardUseCompatPadding="true"
をCardViewに追加し、必要な間隔を与えます。
これを試して...
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>
エッジの色が設定した値よりも暗いのときに誰かが問題に直面した場合、#AARRGGBB
形式で色を設定すると発生する可能性があります。この問題を解決するには、通常の#RRGGBB
形式で色を設定するだけです。