При использовании CardView в RecyclerView в NestedScrollView отображаются только два вида карт, а их 6 - PullRequest
0 голосов
/ 12 февраля 2019

Я много искал, но похоже, что это в каждом конкретном случае.Мой случай состоит в том, чтобы использовать RecyclerView с CardView и поместить их все в 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 столбцами.) Похоже, что вся высота вложенного представления прокрутки - это только высота экрана (кроме панели приложения).

Я подтвердил, что при загрузке этого действия все6 CardViewMainViewHolder объекты создаются внутри CardViewMainAdapter класса.

Я попытался добавить app:layout_behavior="@string/appbar_scrolling_view_behavior", но это не помогло.

Я сделал самый внешний макет как линейный макет для макета активностино не сработало.

По словам инспектора макета, есть только два просмотра карт (один ряд).

Еще один вопрос ... Я хочу сделать цвет темно-серый междукарта просмотров.Я пытался найти, чтобы поставить цвет фона, но это было не легко.в iOS это было очень просто - просто установите цвет фона любого подходящего вида, чтобы этот цвет работал ... но android, ну, я не знаю.Constraintlayout или NestedScrollView, либо LinearLayout ... не имеют атрибутов цвета.Как?

Третий вопрос (поскольку он связан) заключается в том, что ... при первом показе действия вложенное представление прокрутки уже прокручивается ... почему?и как это исправить?scrollTo (0,0) не работает.

...