ScrollView 내부의 Recyclerview가 부드럽게 스크롤되지 않습니다 ScrollView원활 스크롤됩니다

내 애플 리케이션을 위해 내가 사용하고 RecyclerView내부 a를 ScrollView(가) RecyclerView사용하여 내용에 따라 높이가 이 라이브러리를 . 스크롤이 작동하지만을 스크롤하면 부드럽게 작동하지 않습니다 RecyclerView. 나는 오버 스크롤하면 ScrollView원활 스크롤됩니다 자체.

내가 정의하는 데 사용하는 코드 RecyclerView:

LinearLayoutManager friendsLayoutManager = new LinearLayoutManager(getActivity().getApplicationContext(), android.support.v7.widget.LinearLayoutManager.VERTICAL, false);
mFriendsListView.setLayoutManager(friendsLayoutManager);
mFriendsListView.addItemDecoration(new DividerItemDecoration(getActivity().getApplicationContext(), null));

RecyclerView에서 ScrollView:

<android.support.v7.widget.RecyclerView
    android:layout_marginTop="10dp"
    android:layout_marginBottom="10dp"
    android:id="@+id/friendsList"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />


답변

시도해보십시오 :

RecyclerView v = (RecyclerView) findViewById(...);
v.setNestedScrollingEnabled(false);

대안으로, 지원 디자인 라이브러리를 사용하여 레이아웃을 수정할 수 있습니다. 현재 레이아웃이 다음과 같은 것 같습니다.

<ScrollView >
   <LinearLayout >

       <View > <!-- upper content -->
       <RecyclerView > <!-- with custom layoutmanager -->

   </LinearLayout >
</ScrollView >

이를 다음과 같이 수정할 수 있습니다.

<CoordinatorLayout >

    <AppBarLayout >
        <CollapsingToolbarLayout >
             <!-- with your content, and layout_scrollFlags="scroll" -->
        </CollapsingToolbarLayout >
    </AppBarLayout >

    <RecyclerView > <!-- with standard layoutManager -->

</CoordinatorLayout >

그러나 이것은 더 오래 걸리는 길이며, 사용자 정의 선형 레이아웃 관리자에 문제가 없다면 리사이클 러보기에서 중첩 스크롤을 비활성화하십시오.

편집 (2016 년 4 월 3 일)

v 23.2지원 라이브러리 의 릴리스는 이제 모든 기본 설정에서 팩토리 “컨테이너 랩핑”기능을 포함합니다 LayoutManager. 나는 그것을 테스트하지는 않았지만 아마도 사용중인 라이브러리보다 선호해야 할 것입니다.

<ScrollView >
   <LinearLayout >

       <View > <!-- upper content -->
       <RecyclerView > <!-- with wrap_content -->

   </LinearLayout >
</ScrollView >

답변

나는 이것을 사용해야했다.

mMyRecyclerView.setNestedScrollingEnabled(false);

onCreateView()방법으로.

고마워요!


답변

이 방법으로 사용할 수 있습니다 :

이 라인을 recyclerView xml 파일에 추가하십시오.

android:nestedScrollingEnabled="false"

또는 자바 코드에서 :

RecyclerView.setNestedScrollingEnabled(false);

이것이 도움이 되었기를 바랍니다.


답변

XML과 프로그래밍 방식을 모두 사용해 볼 수 있습니다. 그러나 당신이 직면 할 수있는 문제는 (API 21 이하) XML로 수행하면 작동하지 않습니다. 따라서 Activity / Fragment에서 프로그래밍 방식으로 설정하는 것이 좋습니다.

XML 코드 :

<android.support.v7.widget.RecyclerView
      android:id="@+id/recycleView"
      android:layout_width="match_parent"
      android:visibility="gone"
      android:nestedScrollingEnabled="false"
      android:layout_height="wrap_content"
      android:layout_below="@+id/linearLayoutBottomText" /> 

프로그래밍 방식으로 :

 recycleView = (RecyclerView) findViewById(R.id.recycleView);
 recycleView.setNestedScrollingEnabled(false);

답변

스크롤보기 대신 중첩 스크롤보기를 사용하면 문제가 해결되었습니다.

<LinearLayout> <!--Main Layout -->
   <android.support.v4.widget.NestedScrollView>
     <LinearLayout > <!--Nested Scoll View enclosing Layout -->`

       <View > <!-- upper content -->
       <RecyclerView >


     </LinearLayout >
   </android.support.v4.widget.NestedScrollView>
</LinearLayout>

답변

비슷한 문제가 있습니다 (Google PlayStore 디자인과 같은 중첩 RecyclerViews를 만들려고했습니다). 이를 처리하는 가장 좋은 방법은 하위 RecyclerView를 서브 클래 싱하고 ‘onInterceptTouchEvent’및 ‘onTouchEvent’메소드를 대체하는 것입니다. 이렇게하면 해당 이벤트의 동작 및 스크롤 방식을 완전히 제어 할 수 있습니다.


답변

ScrollView를 NestedScrollView로 바꾸면 맨 아래로 부드럽게 스크롤됩니다.