仅显示两个卡片视图,而当使用NestedScrollView的RecyclerView中的CardView时有六个视图

时间:2019-02-12 20:43:33

标签: android android-recyclerview android-nestedscrollview cardview

我进行了很多搜索,但是看起来是逐案的。我的情况是将RecyclerViewCardView一起使用,并将它们全部放入NestedScrollView中,以便可以一次全部滚动它。

以下是屏幕截图视频: https://www.dropbox.com/s/sf3nixef6myfvh4/20190212_161401_edited.mp4?dl=0

这是我的活动布局:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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="match_parent">

    <ImageView  
        android:id="@+id/aImageView"/>

    <android.support.v4.widget.NestedScrollView
        android:id="@+id/nestedScrollView"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toBottomOf="@id/aImageView">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/primaryImageView"
                android:layout_width="match_parent"
                android:layout_height="120dp"
                android:contentDescription="@string/primaryimageview"
                android:scaleType="centerCrop"
                app:srcCompat="@drawable/..." />

            <android.support.constraint.ConstraintLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <!-- many textviews, imageviews... --> 

            </android.support.constraint.ConstraintLayout>

            <android.support.v7.widget.RecyclerView
                android:id="@+id/rv"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="44dp"/>

        </LinearLayout>

    </android.support.v4.widget.NestedScrollView>

</android.support.constraint.ConstraintLayout>

而我是在活动java文件中完成的:

        // card view through recycler view
        RecyclerView rv = findViewById(R.id.rv);

        rv.setLayoutManager(new GridLayoutManager(context, 2));
        rv.setNestedScrollingEnabled(false);
        rv.setHasFixedSize(true);

        CardViewMainAdapter cardViewMainAdapter = new CardViewMainAdapter();
        rv.setAdapter(cardViewMainAdapter);

此外,对于cardView,

<!-- see https://developer.android.com/guide/topics/ui/layout/cardview -->
<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/card_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    app:cardCornerRadius="8dp"
    app:cardElevation="2dp"
    app:cardMaxElevation="4dp"
    app:cardUseCompatPadding="true"
    app:cardPreventCornerOverlap="true">

    <android.support.constraint.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <!-- Image views, text views... -->

    </android.support.constraint.ConstraintLayout>

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

一切看起来都很不错,它可以完全滚动,但是实际上,我的适配器具有6个卡视图的数据,但是回收者视图仅显示2个卡视图。 (因此,只有一行包含2列。)看起来嵌套滚动视图的整个高度就是屏幕的高度(应用栏除外)。

我确认加载此活动后,将在CardViewMainViewHolder类内创建所有6个CardViewMainAdapter对象。

我尝试添加app:layout_behavior="@string/appbar_scrolling_view_behavior",但没有帮助。

我将最外面的布局作为活动布局的线性布局,但没有用。

根据布局检查器,只有两个卡片视图(一行)。

另一个问题是...我希望在卡片视图之间将颜色变为深灰色。我试图找到背景色,但这并不容易。在iOS中,这非常容易-只需将任何合适的视图的背景色设置为该颜色即可...但是android,我不知道。 ConstraintlayoutNestedScrollView,也没有LinearLayout ...没有任何颜色属性。怎么样?

第三个问题(因为它是相关的)是...首次显示活动时,嵌套的滚动视图已经“滚动”了。为什么?以及如何解决? scrollTo(0,0)无效。

0 个答案:

没有答案