RecyclerViewのLayoutManagerにGridLayoutManagerをセットする場合、そのアイテムのレイアウトとしてこのような実装をするときちんとマージンが反映されずに、カード自体が小さくなってしまう。
ダメな例
card_item.xml
<CardView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp">
<!--Some views -->
</CardView>
なので、GridLayoutManagerでCardViewを使用する場合、このように外側にFrameLayoutを入れる必要がある。
正しい例
card_item.xml
<Frame_Layout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<CardView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp">
<!--Some views -->
</CardView>
</FrameLayout>
なおLinearLayoutManagerではFrameLayoutなしでもちゃんと表示される。CardView以外でどうなるかは調べていないのでわかりません。
追記2015/7/28
これでもCardViewのサイズは指定通りにセット出来ますが、marginがおかしくなりますね。例えばmarginを4dpにセットした場合なぜか実際は8dpになります。なので、marginを1/2した値を設定しなければならない? これはバグなのだろうか。。。