Android ListView 卡片行为

Android ListView card behaviour

我刚刚注意到一件事。当我在 ListView 中使用布局时,我通常使用 LinearLayout,然后在其中使用 CardView。 CardView 的边距为 10dp,看起来一切正常。但是,当我只使用具有相同属性的 CardView 时,它根本没有给我余地。我做错了什么吗?

布局 1(给我想要的布局):

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        card_view:cardBackgroundColor="@color/white"
        card_view:cardElevation="2sp"
        card_view:cardUseCompatPadding="true">

    </android.support.v7.widget.CardView>

</LinearLayout>

版式 2(无边距):

<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dp"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    card_view:cardElevation="2sp"
    card_view:cardUseCompatPadding="true"
    card_view:cardBackgroundColor="@color/white">

</android.support.v7.widget.CardView>

我也运行遇到这个问题。我认为会发生这种情况,因为 ListView ignores/doesn 不支持 margin 属性。

更多相关信息:Why LinearLayout's margin is being ignored if used as ListView row view

旁注:我会在 CardView 周围使用 FrameLayout,它在性能方面更好。