5

我正在使用 GridLayoutManager 在 RecyclerView 中使用 CardViews。我面临的问题是,我在 xml 或 java 中为卡片视图指定的高度,它不会被 CardView 强制执行。似乎CardView 的子视图的累积高度变成了 CardView 的高度。这种行为考虑到它是在其子视图上强制执行的父布局参数这一事实。

我错过了什么?难道我做错了什么?

<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:id="@+id/cardView"
    android:layout_width="@dimen/card_view_width"
    android:layout_height="0dp"
    android:layout_marginBottom="6dp"
    android:elevation="10dp"
    android:orientation="horizontal"
    card_view:cardCornerRadius="2dp"

    >

<ImageView
 android:layout_width="@dimen/card_view_width"
    android:layout_height="10dp"
></ImageView>

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

在这种情况下,卡片视图的高度为 0dp,但仍然是布局设计器预览,当应用在设备上运行时,卡片的大小为 10dp。

此致

4

3 回答 3

1

根据你告诉程序的内容,你期望会发生什么?

你告诉这个CardVeiw有一个高度0dp: android:layout_height="0dp"

然后你放置一个ImageView内部,并告诉它的高度为10dp

因此,当然会CardView使其本身更高以使其ImageView适合。

如果您希望内部元素与 的高度匹配CardView,请将 的 设置layout_heightCardView您想要的任何内容,例如20dp

android:layout_height="20dp"

然后有内部元素match_parent

android:layout_height="match_parent"
于 2015-01-03T20:28:32.457 回答
0

为什么将可见性设置为0?如果您想隐藏它,请使用“visibility = View.GONE”。

另外,不要使用elevation在 L 之前不起作用的 which。Insteed,使用cardElevation以便它也可以在 L 之前起作用。

于 2015-01-04T09:32:02.627 回答
0

尝试在 CardView中设置android:layout_height="wrap_content" 。

于 2016-06-23T08:07:19.173 回答