1. 程式人生 > >Android-CardView適配5.0、畫素適配

Android-CardView適配5.0、畫素適配

用過CardView的可能遇到過適配問題。

在Android 5.0,API 21以上的版本才正常,在21以下邊距會自動增加陰影的寬度。
如果不做適配,那麼間距就會擴大,比如設定陰影高度為4dp,marginTop為3,最後效果就是控制元件的高度-4,marginTop為4+3=7dp。

參考百度的一些解決方案是給CardView設定cardPreventCornerOverlap屬性。但是嘗試並不能實現,於是只能通過比較笨的方式。

1、通過對不同版本設定不同的margin距離,
2、通過不同的解析度
res

API 21及以上:

    <dimen name
="dp_card_left_12">
15.0dip</dimen> <dimen name="dp_card_top">7.5dip</dimen> <dimen name="dp_card_margin_15">15.0dip</dimen> <dimen name="dp_card_margin_10">10.0dip</dimen> <dimen name="dp_card_margin_5">5.0dip</dimen> <dimen name="dp_card_margin_7"
>
7dip</dimen> <dimen name="dp_card_margin_8">8.0dip</dimen> <dimen name="dp_card_margin_0">0.0dip</dimen> <dimen name="dp_card_margin_4">4.0dip</dimen> <dimen name="dp_card_240">240.0dip</dimen> <dimen name="dp_card_104">105.0dip</dimen
>
<dimen name="dp_card_150">150.0dip</dimen> <dimen name="dp_card_180">180.0dip</dimen> <dimen name="dp_card_margin_item7">7.5dip</dimen> <dimen name="dp_card_margin_item15">15.0dip</dimen> <dimen name="px_card_170">85.0dip</dimen>

API 21以下

    <dimen name="dp_card_margin_15">11.0dip</dimen>
    <dimen name="dp_card_margin_10">6.0dip</dimen>
    <dimen name="dp_card_margin_5">1.0dip</dimen>
    <dimen name="dp_card_margin_7">3.5dip</dimen>
    <dimen name="dp_card_margin_8">4.0dip</dimen>
    <dimen name="dp_card_margin_0">-4.0dip</dimen>
    <dimen name="dp_card_margin_4">0.0dip</dimen>
    <dimen name="dp_card_240">244.0dip</dimen>
    <dimen name="dp_card_104">108.0dip</dimen>
    <dimen name="dp_card_150">154.0dip</dimen>
    <dimen name="px_card_170">89.0dip</dimen>
    <dimen name="dp_card_180">188.0dip</dimen>
    <dimen name="dp_card_margin_item7">2.0dip</dimen>
    <dimen name="dp_card_margin_item15">9.0dip</dimen>