J'ai un fragment appelé PostsFragment qui est utilisé à deux endroits.
HomeActivityPostActivity 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"