J'ai un fragment appelé PostsFragment
qui est utilisé à deux endroits.
HomeActivity
PostActivity
Dans HomeActivity
, HomeActivity
PostsFragment
et tout va bien, mais, dans la deuxième activité PostActivity
, j'ai en haut des composants -post details- et en dessous d'eux, il y a FragmentContainerView
où je veux le joindre à nouveau, -I voulez afficher les articles associés-.
La PostActivity
parent NestedScrollView
est NestedScrollView
. lorsque je règle nestedScrollingEnabled
sur true
intérieur de PostsFragment
la barre de défilement ne fonctionne que sur recyclerView
mais je veux rendre la vue entière dans PostActivity
défilable, ce qui ne fonctionne pas si je définis nestedScrollingEnabled
sur false
.
J'ai fait beaucoup de recherches et rien ne fonctionne.
Modifier 1 :
PostActivity
<?xml version="1.0" encoding="utf-8"?> <layout 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"> <data> <variable name="viewModel" type="com.trade.scope.ui.projects.ProjectsViewModel" /> </data> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <androidx.recyclerview.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" android:clipToPadding="false" android:orientation="vertical" android:scrollbars="vertical" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" tools:listitem="@layout/view_holder_project" /> </androidx.constraintlayout.widget.ConstraintLayout> </layout>
PostsFragment
<?xml version="1.0" encoding="utf-8"?> <layout 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"> <data> <import type="android.view.View" /> <variable name="viewModel" type="com.trade.scope.ui.project.ProjectViewModel" /> </data> <androidx.core.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" android:overScrollMode="never" app:layout_behavior="android.support.design.widget.AppBarLayout$ScrollingViewBehavior"> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".ui.project.ProjectActivity"> <com.trade.scope.ui.custom.ViewPagerPauseAble android:id="@+id/image_view_banner" android:layout_width="match_parent" android:layout_height="256dp" android:layout_marginHorizontal="16dp" app:layout_collapseMode="parallax" app:layout_constraintTop_toTopOf="parent" /> <com.google.android.material.textview.MaterialTextView android:id="@+id/text_view_title_" style="@style/Auth.Sub" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginStart="18dp" android:layout_marginTop="24dp" android:layout_marginEnd="18dp" android:fontFamily="@font/muller_bold" android:text="@string/project_request" android:textColor="@color/dark_text" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/image_view_banner" /> <FrameLayout android:id="@+id/divider" android:layout_width="0dp" android:layout_height="2dp" android:layout_marginTop="8dp" android:background="@drawable/primary_line" app:layout_constraintStart_toStartOf="@+id/text_view_title_" app:layout_constraintTop_toBottomOf="@+id/text_view_title_" app:layout_constraintWidth_percent="0.4" /> <androidx.fragment.app.FragmentContainerView android:id="@+id/fragment_container_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:nestedScrollingEnabled="false" app:layout_constraintTop_toBottomOf="@+id/divider" /> </androidx.constraintlayout.widget.ConstraintLayout> </androidx.core.widget.NestedScrollView> </layout>
3 Réponses :
Vous n'avez pas publié votre code, donc je suppose que cela pourrait être le cas. Vous devez définir nestedScrollingEnabled
sur false
pour recyclerview pas pour NestedScrollView
nestedScrollingEnabled
doit être sur votre RecyclerView
non sur FragmentContainerView
Vous avez 2 options:
Mettez nestedScrollingEnabled par programme comme ceci:
android:nestedScrollingEnabled="false"
Mettez dans votre recyclerview dans un fichier xml
yourRecyclerView.isNestedScrollingEnabled = false
J'espère que ça t'aidera
Merci pour votre aide, mais comme je l'ai mentionné dans l'article, cela ne fonctionne pas.
Oh désolé je ne l'ai pas vu. Pourquoi avez-vous NestedScrollView dans Activity xml? Pourriez-vous le mettre dans le xml du fragment?
Vous AppBarLayout
une vue complexe, je peux recommander CoordinatorLayout
avec AppBarLayout
et CollapsingToolbarLayout
et ne manquez pas l' app:layout_behavior="@string/appbar_scrolling_view_behavior"