web-dev-qa-db-ja.com

CardView cardUseCompatPadding

Lollipopと以前のバージョンの両方でAndroidアプリを開発しています。

CardView(このcardViewには子がなく、ビューの後ろに配置されているだけです)を使用してシャドウを作成しています。

ただし、Lollipop以前のデバイスで実行すると問題が発生します。

そこで、cardUseCompatPaddingをtrueに設定しました。この互換性のあるパディングの価値を得ることができるかどうか疑問に思っていますか?

値への参照を見つけることができる場所はどこにありますか?

8
JayVDiyk

CardViewに追加される互換性のあるパディングは、設定したコーナーの高さと半径によって異なります。実際の計算は、サポートライブラリのRoundRectDrawableWithShadowクラスにあります。

次のようなものを使用して、実行時に計算できます。

    float elevation = cardView.getMaxCardElevation();
    float radius = cardView.getRadius();
    double cos45 = Math.cos(Math.toRadians(45));

    int horizontalPadding = (int) (elevation + (1 - cos45) * radius);
    int verticalPadding = (int) (elevation * 1.5 + (1 - cos45) * radius);
8
Jahnold