1. ホーム
  2. android

[解決済み] Android 5.0のAppCompat CardViewにXMLで昇格を設定する。

2023-02-18 04:58:18

質問

私が理解したところでは、プレビューの初期段階では、XML でのみ標高を設定する方法はないようでした。 CardView のみに標高を設定する方法は、Java でのハックなしにはなかったようです。正式リリースが出た今、標高を設定するための Java コードを書かずに XML でこれを行う方法はあるのでしょうか?

私が試したのは card_view:cardElevation を試してみましたが、効果がありませんでした。 5.0 用のエミュレータを使用していたときは、すべてがうまくいっていると思っていました。しかし、現在、実機で正式版を使用しているため、すべての CardView が消えてしまいました。

ロリポップ以前は、問題なく使えています。

以下は、私の完全な 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">

どのように解決するのですか?

マージン/パディングの問題のようです。 カードユーズコンパットパディング 属性を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のドキュメントからの説明です。

<ブロッククオート

CardViewは、プラットフォーム上に影を描くために追加のパディングを追加する前に L.

このため、LとL以前でCardの大きさが異なる場合があります。 CardViewを他のViewと揃える必要がある場合、変更を考慮したapi バージョン固有のディメンションリソースが必要になる場合があります。別の方法として cardUseCompatPaddingフラグをtrueに設定すると、CardViewはLプラットフォームとL以降のプラットフォームで同じパディング値を追加することができます。

cardUseCompatPaddingフラグをtrueに設定するとUIに不要な隙間ができるため、デフォルト値はfalseにします。