9

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

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

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

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

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

4

2 に答える 2

15

CardView に追加される compat パディングは、設定した角の高さと半径によって異なります。実際の計算は、サポート ライブラリの 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);
于 2016-01-07T14:12:53.063 に答える