2017-09-15 42 views
0

我有一個問題,列表項的大小因手機是否爲21+而異。使列表項目大小保持一致

它如何使它成爲21歲以前的設備具有相同的項目間距?

列表:

<ListView 
    android:id="@android:id/list" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    android:clipToPadding="false" 
    android:divider="@color/transparent" 
    android:dividerHeight="0dp" 
    android:listSelector="@drawable/list_selector_transparent" 
    android:paddingBottom="1dp" 
    android:paddingTop="3dp" 
    android:scrollbarAlwaysDrawVerticalTrack="false" 
    android:smoothScrollbar="true" 
    android:visibility="visible" /> 

項目:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:focusable="false"> 

<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/card_view" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:layout_marginBottom="3.5dp" 
    android:layout_marginLeft="5dp" 
    android:layout_marginRight="5dp" 
    android:layout_marginTop="1.5dp" 
    card_view:cardCornerRadius="3dp" 
    card_view:cardElevation="1.7dp"> 
</android.support.v7.widget.CardView> 
</LinearLayout> 

如果你知道一個解決方案,我將非常感激。由於

這裏是我的意思圖片:

Picture of the issue

回答

1

這是發生在陰影的繪製不同的API層次原因。在21+中,陰影被繪製爲外部的視圖本身,而在較舊的層次上,它必須繪製內部的視圖的邊界。支持庫在這些較舊的API級別上向CardView添加填充以便有空間繪製陰影。

可以將此屬性添加到您的<android.support.v7.widget.CardView>標籤,使他們具有相同的行爲,無論API級別:

app:cardUseCompatPadding="true" 

the documentation

棒棒堂之前,CardView添加填充其內容併爲該區域繪製陰影。

或者,如果你想CardView對平臺棒棒堂和後加內墊,以及,你可以調用setUseCompatPadding(布爾),並通過真實的。