1
votes

RecyclerView nestedScrollingEnabled dans un FragmentContainerView avec un NestedScrollView

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 :

  • Voici le code de 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>
  • Le code de 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>


0 commentaires

3 Réponses :


0
votes

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


1 commentaires

nestedScrollingEnabled doit être sur votre RecyclerView non sur FragmentContainerView



0
votes

Vous avez 2 options:

  1. Mettez nestedScrollingEnabled par programme comme ceci:

      android:nestedScrollingEnabled="false"
    
  2. Mettez dans votre recyclerview dans un fichier xml

     yourRecyclerView.isNestedScrollingEnabled = false
    

J'espère que ça t'aidera


2 commentaires

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?



1
votes

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"


0 commentaires