首页 > 解决方案 > 滚动问题 - 在 NestedScrollView 中使用两个 RecyclerView

问题描述

我在nestedscrollview 中使用了两个recyclerview 和其他一些视图,我 android:nestedScrollingEnabled="false"在两个recyclerview 中都添加了,但滚动不流畅。

我尝试了以下方法来停止RecyclerView垂直滚动,但问题未解决

RecyclerView.LayoutManager layoutManager = new  LinearLayoutManager(getActivity()) {
        @Override
        public boolean canScrollVertically() {
            return false;
        }
    };
    recyclerView.setLayoutManager(layoutManager);

我也试过这个解决方案

ViewCompat.setNestedScrollingEnabled(recyclerView, false);

没有任何帮助,我的 recyclerview 高度都是包装内容。

在这里,我分享了我的嵌套滚动视图 xml 文件:

      <androidx.core.widget.NestedScrollView
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="@color/colorPrimaryDark"
        android:fillViewport="true"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/mbMenu">

        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <androidx.recyclerview.widget.RecyclerView
                android:id="@+id/newsItemList"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="@dimen/marginSizeS"

                android:layout_marginTop="@dimen/marginSizeS"
                android:layout_marginEnd="@dimen/marginSizeS"
                android:layout_marginBottom="@dimen/marginSizeS"
                android:layoutAnimation="@anim/layout_animation"
                android:nestedScrollingEnabled="false"
                android:orientation="vertical"
                app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <com.google.android.material.textview.MaterialTextView
                android:id="@+id/mtTopics"
                style="@style/textSemiBold"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="@dimen/marginSizeS"
                android:layout_marginTop="@dimen/marginSizeS"
                android:text="@string/topics"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/newsItemList" />

            <androidx.recyclerview.widget.RecyclerView
                android:id="@+id/topicItemList"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="@dimen/marginSizeS"
                android:layout_marginTop="@dimen/marginSizeS"
                android:layout_marginEnd="@dimen/marginSizeS"
                android:layout_marginBottom="@dimen/marginSizeS"
                android:layoutAnimation="@anim/layout_animation"
                android:orientation="horizontal"
                app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/mtTopics" />


            <include
                android:id="@+id/newsCompletedAdView"
                layout="@layout/news_list_item_medium_adview"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="@dimen/marginSizeS"
                android:layout_marginTop="@dimen/marginSizeS"
                android:layout_marginEnd="@dimen/marginSizeS"
                android:layout_marginBottom="@dimen/marginSizeS"
                android:layoutAnimation="@anim/layout_animation"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/topicItemList" />

            <com.google.android.material.textview.MaterialTextView
                android:id="@+id/mtRelatedNews"
                style="@style/textSemiBold"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="@dimen/marginSizeS"
                android:layout_marginTop="@dimen/marginSizeS"
                android:text="@string/related_news"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/newsCompletedAdView" />

            <com.google.android.material.button.MaterialButton
                android:id="@+id/mbRelatedNewsSeeAll"
                style="@style/buttonSeeAll"
                android:layout_width="wrap_content"
                android:layout_marginEnd="@dimen/marginSizeS"
                android:text="@string/see_all"
                android:textAllCaps="false"
                app:backgroundTint="@color/colorAccent"
                app:layout_constraintBottom_toBottomOf="@+id/mtRelatedNews"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintTop_toTopOf="@+id/mtRelatedNews" />

            <androidx.recyclerview.widget.RecyclerView
                android:id="@+id/relatedNewsList"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="@dimen/marginSizeS"
                android:layout_marginTop="@dimen/marginSizeS"
                android:layout_marginEnd="@dimen/marginSizeS"
                android:layout_marginBottom="@dimen/marginSizeS"
                android:layoutAnimation="@anim/layout_animation"
                android:nestedScrollingEnabled="false"
                android:orientation="vertical"
                app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/mtRelatedNews" />



        </androidx.constraintlayout.widget.ConstraintLayout>


    </androidx.core.widget.NestedScrollView>

在这里,我添加了我的 gradle 依赖项:

    implementation platform('com.google.firebase:firebase-bom:28.0.1')
implementation 'com.google.firebase:firebase-storage-ktx'
// Firebase Cloud Messaging (Kotlin)
implementation 'com.google.firebase:firebase-messaging-ktx'
implementation 'com.google.firebase:firebase-analytics'
implementation 'com.google.firebase:firebase-firestore-ktx'
implementation 'com.google.firebase:firebase-auth-ktx'
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'androidx.core:core-ktx:1.6.0'
implementation 'androidx.appcompat:appcompat:1.3.0'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'

implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.3"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.3"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.3.9"


implementation 'com.facebook.android:facebook-android-sdk:6.4.0'
implementation 'com.twitter.sdk.android:twitter-core:3.3.0'


implementation 'android.arch.work:work-runtime:1.0.1'


implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava'

implementation "androidx.navigation:navigation-fragment-ktx:2.3.5"
implementation "androidx.navigation:navigation-ui-ktx:2.3.5"


// FirebaseUI for Firebase Auth
implementation 'com.firebaseui:firebase-ui-auth:7.1.1'
// FirebaseUI for Cloud Storage
implementation 'com.firebaseui:firebase-ui-storage:7.1.1'


implementation 'com.github.bumptech.glide:glide:4.12.0'
kapt 'com.github.bumptech.glide:compiler:4.12.0'
implementation "androidx.paging:paging-runtime-ktx:$paging_version"


implementation 'com.google.dagger:hilt-android:2.33-beta'
kapt 'com.google.dagger:hilt-android-compiler:2.33-beta'
implementation 'androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03'
kapt 'androidx.hilt:hilt-compiler:1.0.0'
implementation 'com.google.android.gms:play-services-ads:20.2.0'

如果我错过了什么,请告诉我

标签: androidandroid-recyclerview

解决方案


推荐阅读