web-dev-qa-db-ja.com

LollipopデバイスにCardviewの影が表示されませんか?

私の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>

Refer the attachment

32
Dinesh T A

ドキュメントをもう一度調べた後、最終的に解決策を見つけました。

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>
91
Ram Patra

そこに記載されているように CardViewはAndroid L にシャドウを表示していません_hardwareAccelerated = true_

_hardwareAccelerated = true_ enter image description here

_hardwareAccelerated = false_ hardwareAccelerated CardView

詳細については、 Android Hardware Acceleration を参照してください

15
AndreyICE

Lollipop以降では、カードにいくつかのマージンを追加する必要があります。

<Android.support.v7.widget.CardView
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:layout_margin="4dp"
            />

影は実際のビューの外側にあるため

5
deviant

誰かのため 、

マニフェストに次の行がある場合、もう1つ注意する必要があります。影は表示されません。

Android:hardwareAccelerated = "false"

私は提案されたものをすべて試しましたが、ラインを削除したときにしかうまくいきませんでした。ラインがあった理由は、私のアプリがいくつかのビットマップ画像で動作し、それらがアプリをクラッシュさせるためでした。

1

ねえ、私は上記の問題の解決策を手に入れました。あなたの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">`

あなたの役に立つことを願っています...

0
sachin pangare

Android:hardwareAccelerated = "false" androidManifestファイルを配置してみてください。同じ問題に直面し、マニフェストに1行だけ追加することで解決するため、問題が解決する場合があります。

0
Madhav_nimavat