android - 滚动问题 - 在 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'
如果我错过了什么,请告诉我
解决方案
推荐阅读
- python - 初始化模型时 GPU 内存不足
- java - 如何获取bean列表?
- java - 计算一个项目在 android 中出现的次数不准确
- reactjs - 任务:react-native-doc-viewer compileDebugJavaWithJavac FAILED
- r - R:ggbiplot - 为什么我不能用 guide_legend 控制图例列的数量?
- c++ - 调用函数后程序意外结束
- c# - 无法将方法的对象调用到表单中
- c# - 从另一个应用程序运行 .exe 并自动输入值
- csv - 在 zeppelin 0.8 + spark 中读取 csv 文件
- firebase - 如何使用 Flutter 在 Firebase 中正确登录和注册?