私のAndroidアプリでcardviewを使用しています。ただし、影が表示されていません。ここにxmlレイアウトがあります
デフォルトのオプションメニューの影も表示されません。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
xmlns:card_view="http://schemas.Android.com/apk/res-auto"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="#ECEDF0"
Android:orientation="vertical" >
<Android.support.v7.widget.CardView
xmlns:card_view="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/card_view"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:clipChildren="false"
card_view:cardBackgroundColor="@color/white"
card_view:cardCornerRadius="4dp"
card_view:cardElevation="14dp"
card_view:cardUseCompatPadding="true" >
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:padding="20dp"
Android:text="Google Play" />
</Android.support.v7.widget.CardView>
</LinearLayout>
ドキュメントをもう一度調べた後、最終的に解決策を見つけました。
card_view:cardUseCompatPadding="true"
をCardView
に追加するだけで、Lollipopデバイスに影が表示されます。
何が起こるかというと、CardView
のコンテンツ領域は、Lollipop以前のデバイスとLollipopデバイスでは異なるサイズを取ります。そのため、Lollipopデバイスでは、影は実際にはカードで覆われているため、見えません。この属性を追加することにより、コンテンツ領域はすべてのデバイスで同じままになり、影が見えるようになります。
私のxmlコードは次のようなものです:
<Android.support.v7.widget.CardView
Android:id="@+id/media_card_view"
Android:layout_width="match_parent"
Android:layout_height="130dp"
card_view:cardBackgroundColor="@Android:color/white"
card_view:cardElevation="2sp"
card_view:cardUseCompatPadding="true"
>
...
</Android.support.v7.widget.CardView>
そこに記載されているように CardViewはAndroid L にシャドウを表示していません_hardwareAccelerated = true
_
詳細については、 Android Hardware Acceleration を参照してください
Lollipop以降では、カードにいくつかのマージンを追加する必要があります。
<Android.support.v7.widget.CardView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_margin="4dp"
/>
影は実際のビューの外側にあるため
誰かのため 、
マニフェストに次の行がある場合、もう1つ注意する必要があります。影は表示されません。
Android:hardwareAccelerated = "false"
私は提案されたものをすべて試しましたが、ラインを削除したときにしかうまくいきませんでした。ラインがあった理由は、私のアプリがいくつかのビットマップ画像で動作し、それらがアプリをクラッシュさせるためでした。
ねえ、私は上記の問題の解決策を手に入れました。あなたのxmlにこのコードを追加してください。
<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:layout_width="match_parent"
Android:layout_margin="8dp"
Android:id="@+id/griditem"
Android:layout_height="match_parent"
card_view:cardUseCompatPadding="true"
card_view:cardElevation="4dp"
card_view:cardCornerRadius="3dp">`
あなたの役に立つことを願っています...
Android:hardwareAccelerated = "false" androidManifestファイルを配置してみてください。同じ問題に直面し、マニフェストに1行だけ追加することで解決するため、問題が解決する場合があります。