web-dev-qa-db-ja.com

Android 5.0のAppCompat CardViewでXMLの高度を設定する

私が理解していることから、プレビュー段階の初期には、JavaのハックなしでCardViewsのみにXMLの昇格を設定する方法はないように思われました。公式リリースが公開されたので、Javaコードを記述せずにXMLでこれを行う方法はありますか?

card_view:cardElevationを試しましたが効果はありません。 5.0のエミュレータを使用していたとき、すべてがうまくいくと思っていました。しかし、実際のデバイスで公式バージョンを使用しているので、CardViewsがすべて消えました

事前ロリポップ、それは素晴らしい作品です。

これが私の完全なxmlです

<?xml version="1.0" encoding="utf-8"?>
<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:orientation="horizontal"
    Android:layout_width="match_parent"
    Android:id="@+id/cv1"
    card_view:cardElevation="4dp"
    Android:layout_margin="6dp"
    card_view:cardCornerRadius="3dp"
    Android:layout_height="match_parent">
88
KickingLettuce

マージン/パディングの問題のように見えます。 cardUseCompatPadding 属性をtrueに設定してみてください。例えば。:

<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_height="match_parent"
    Android:layout_margin="6dp"
    card_view:cardUseCompatPadding="true"
    card_view:cardElevation="4dp"
    card_view:cardCornerRadius="3dp">

Android docからの説明:

CardViewは、パディングを追加して、Lの前にプラットフォームに影を描画します。

これにより、LとLの前でカードのサイズが異なる場合があります。CardViewを他のビューに合わせる必要がある場合、変更に対応するためにAPIバージョン固有のディメンションリソースが必要になる場合があります。別の方法として、cardUseCompatPaddingフラグをtrueに設定すると、CardViewはプラットフォームL以降で同じパディング値を追加します。

CardUseCompatPaddingフラグをtrueに設定すると、UIに不要なギャップが追加されるため、デフォルト値はfalseです。

299
Gaëtan M.

cardElevation 属性を使用する必要があります

<Android.support.v7.widget.CardView
    xmlns:card_view="http://schemas.Android.com/apk/res-auto"
    card_view:cardElevation="4dp" />
12

この行がある場合

Android:hardwareAccelerated="false"

マニフェストアプリケーションタグでは、影は表示されませんでした。この行を削除してみてください

または使用する

Android:hardwareAccelerated="true"

これは私のために働いた!私もそれがあなたのために働くことを願っています:)

12
matin ashtiani

追加することで解決しました

xmlns:card_view = "http://schemas.Android.com/apk/res-auto"

例えば:

<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_height="wrap_content"
    Android:layout_marginTop="5dp"
    Android:layout_marginLeft="5dp"
    Android:layout_marginRight="5dp"
    card_view:cardCornerRadius="5dp">
1
felhi

カードビューにapp:cardElevation = "8dp"属性を追加しているので、次のようになります。

<Android.support.v7.widget.CardView
        Android:layout_width="match_parent"
        Android:layout_height="160dp"
        Android:layout_marginStart="16dp"
        Android:layout_marginLeft="16dp"
        Android:layout_marginTop="24dp"
        Android:layout_marginEnd="16dp"
        Android:layout_marginRight="16dp"
        app:cardElevation="8dp"
        app:cardCornerRadius="8dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView">

        <ImageView
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:scaleType="centerCrop"
            Android:src="@drawable/kmp_warna1" />

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

それが役立つことを願っています

0
Cevin Ways