Android RecyclerView平台之间的间距差异

时间:2015-01-21 19:28:59

标签: android xml android-recyclerview android-cardview

预先披露,这是一个学校项目。

对于RecyclerView内部的CardView列表,我遇到了一个有点令人困惑的布局问题,即5.0之间卡片之间的间距不存在,而4.4则没问题。这是两个要展示的截图。

Android 4.4(在设备上,Galaxy S4) 4.4

Android 5.0.1(在设备上,Nexus 4) 5.0.1

我可以在5.x版本中看到卡角,所以卡片就在那里。我有一种感觉这与运行5.x所需的某些XML属性有关,支持库在4.x上自动伪造,但谷歌搜索失败了。这是相关的XML:

片段布局

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.hinodesoftworks.kanagt.HiraganaListFragment">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/hira_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
</FrameLayout>

卡片布局

<?xml version="1.0" encoding="utf-8"?>
<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_height="match_parent"
    android:layout_width="match_parent"
    card_view:cardCornerRadius="4dp">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:id="@+id/kana_card_display"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="46sp"
            android:text="あ"/>

        <TextView
            android:id="@+id/kana_card_roma"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/kana_card_display"
            android:layout_toEndOf="@id/kana_card_display"
            android:text="a"
            />

        <TextView
            android:id="@+id/kana_card_info1_display"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/kana_card_display"
            android:layout_toEndOf="@id/kana_card_display"
            android:layout_below="@id/kana_card_roma"
            android:text="INFO 1"/>

        <TextView
            android:id="@+id/kana_card_info2_display"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/kana_card_display"
            android:layout_toEndOf="@id/kana_card_display"
            android:layout_below="@id/kana_card_info1_display"
            android:text="INFO 2"/>

    <HorizontalScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/kana_card_info2_display">
            <ImageView
                android:id="@+id/kana_card_diagram"
                android:layout_width="match_parent"
                android:layout_height="100dp"
                android:scaleType="fitStart"

                android:adjustViewBounds="true"/>
    </HorizontalScrollView>
    </RelativeLayout>

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

我真的希望这是一个简单的XML修复的愚蠢错误;支持库版本正常工作让我对此抱有希望。

1 个答案:

答案 0 :(得分:4)

如果要在5.0上填充,请遵循与先前平台相同的规则,将此属性添加到CardView XML元素

app:cardUseCompatPadding="true"

在Lollipop上,可以在视图边界之外绘制阴影。在Kitkat和更低的额外空间必须保留阴影。这就是为什么在Lollipop上必须明确设置间距。