Android-CardView適配5.0、畫素適配
阿新 • • 發佈:2018-12-13
用過CardView的可能遇到過適配問題。
在Android 5.0,API 21以上的版本才正常,在21以下邊距會自動增加陰影的寬度。
如果不做適配,那麼間距就會擴大,比如設定陰影高度為4dp,marginTop為3,最後效果就是控制元件的高度-4,marginTop為4+3=7dp。
參考百度的一些解決方案是給CardView設定cardPreventCornerOverlap屬性。但是嘗試並不能實現,於是只能通過比較笨的方式。
1、通過對不同版本設定不同的margin距離,
2、通過不同的解析度
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>