RecyclerView和AppBarLayout之间的差距

时间:2018-08-09 22:16:07

标签: android android-layout android-coordinatorlayout

如屏幕截图所示,在我的recyclerview中(在activity_main中),在recyclerview和appbarlayout之间,我有一些垂直空间很大的项目。

enter image description here

代码本身。

activity_main

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layoutDirection="rtl">
    <android.support.design.widget.CoordinatorLayout
        android:id="@+id/coordinator_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".view.activity.MainActivity">

        <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="?colorPrimary"
                app:layout_scrollFlags="scroll|enterAlways" />
        </android.support.design.widget.AppBarLayout>

        <android.support.v7.widget.RecyclerView
            android:id="@+id/recycler_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            tools:listitem="@layout/layout_app_feature" />
    </android.support.design.widget.CoordinatorLayout>

    <android.support.design.widget.NavigationView
        android:id="@+id/navigation_view"
        android:layout_width="280dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:headerLayout="@layout/layout_navigation_header"
        app:menu="@menu/navigation_menu" />
</android.support.v4.widget.DrawerLayout>

layout_app_feature 在这种布局中,我试图显示一些带有带标题(TextView)图像的项目

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginRight="@dimen/standard_margin"
    android:layout_marginLeft="@dimen/standard_margin"
    android:layout_marginTop="@dimen/small_margin"
    android:layout_marginBottom="@dimen/small_margin"
    app:cardElevation="@dimen/standard_card_Elevation"
    app:cardCornerRadius="@dimen/standard_card_Radius">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:foreground="?attr/selectableItemBackground"
        android:padding="@dimen/standard_margin">

        <ImageView
            android:id="@+id/feature_image_view"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="@dimen/standard_margin"
            android:layout_marginTop="@dimen/standard_margin"
            android:adjustViewBounds="true" />

        <TextView
            android:id="@+id/feature_title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="@dimen/standard_margin"
            android:paddingLeft="@dimen/standard_margin"
            android:paddingRight="@dimen/standard_margin"
            android:layout_below="@id/feature_image_view"
            android:gravity="right"
            />
    </RelativeLayout>
</android.support.v7.widget.CardView>

activity_banner_slider 而且我还有一个活动来显示顶部横幅滑块和工具栏

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".view.TopBannerSlider">

    <com.daimajia.slider.library.SliderLayout
        android:id="@+id/slider"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        app:indicator_visibility="invisible" />

    <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:cardCornerRadius="@dimen/standard_card_Elevation">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="@dimen/standard_margin">

            <ImageView
                android:id="@+id/icon_list"
                android:layout_width="32dp"
                android:layout_height="32dp"
                android:layout_alignParentStart="true"
                app:srcCompat="@drawable/ic_menu_list" />

            <TextView
                android:id="@+id/label_app_features_list"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:layout_toEndOf="@id/icon_list"
                android:text="دسترسی سریع" />
        </RelativeLayout>
    </android.support.v7.widget.CardView>
</LinearLayout>

layout_navigayion_heaader

和用于显示导航视图的布局

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
    android:id="@+id/navigation_header_image"
    android:layout_width="match_parent"
    android:layout_height="220dp"
    android:adjustViewBounds="true"
    android:src="@drawable/navigation_header"
    android:scaleType="centerCrop"/>
<ImageView
    android:layout_width="60dp"
    android:layout_height="60dp"
    android:layout_alignParentRight="true"
    android:layout_margin="@dimen/standard_margin_x2"
    android:src="@drawable/default_avatar"
    />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_marginRight="@dimen/standard_margin"
    android:layout_marginBottom="@dimen/standard_margin_x2"
    android:textColor="@color/white"
    android:textSize="15dp"
    android:text="نام کاربری: Mohammad"
    android:layout_alignBottom="@id/navigation_header_image"
    />
</RelativeLayout>

我检查了代码中的所有内容,但不知道为什么

有人知道为什么吗?

2 个答案:

答案 0 :(得分:0)

如果您在AsyncStorage.getItem("USER_ID").then((value) => { console.log("userId in async = " + value); this.setState({ userId: value }); alert(this.state.userId); // move this line here }); // removed from here 内部的CardViewTextView上方使用了该标签,那么我会告诉您,这是导致问题的原因。

layout_app_featurelistitem的项目,因此它根据此文件生成项目: RecyclerView

解决方案:

将以上layout_app_featureCardView放在TextView之外的RelativeLayout 或列表(RecyclerView)中,并且< strong>在layout_app_feature 内部。


无论如何,似乎您正在使用CoordinatorLayout或类似的布局与CollapsingToolbarLayout。您确定粘贴的布局正确吗?我在布局中的任何地方都没有看到ImageView,因此,请再次检查布局。

答案 1 :(得分:0)

最后,我发现了问题 在LinearLayout activity_banner_slider 中,我应该设置android:layout_height="match_parent” 到wrap_content