2016-06-13 6 views
3

보기 페이저의 각 항목에 RecyclerView가 포함 된 선형보기에서 항목으로 ViewPager를가집니다. 문제는 페이지가 처음으로로드 될 때마다 또는 ViewPager에서 페이지를 변경할 때 뷰가 자동으로 스크롤되어 리사이클 러 뷰의 시작 부분이 화면의 상단에 있도록하는 것입니다.안드로이드 중첩 된 recyclerview 자동으로 재배치 방지

.gif는 here입니다. 참고 나는 자동으로 위치를 바꾸는 것이 아니라 아래로 스크롤하고있다.

뷰가 리사이 러뷰 뷰의 시작으로 자동 재 위치하지 않게하려면 어떻게합니까?

답변

16

선형 레이아웃에이 속성을 추가 할 수 있습니다. Linear Layout은 scrollView의 직접적인 자식입니다.

+0

하위보기의 초점을 비활성화합니다. 이제는 더 이상 터치 할 수 없거나 클릭 할 수 없습니다.이 문제에 대한 제안이나 대안은 무엇입니까? –

+0

@Harshit 고마워, 내 문제를 해결한다 –

1

문제는 recyclerview가 아니라 귀하의 뷰 페이지에있는 것으로 생각됩니다. ViewPager에는 setOffscreenPageLimit 뷰 파인더에 첨부 된 프래그먼트의 오프 스크린 페이지를 정의하는 데 사용되는 메소드가 있습니다. 당신이 3 조각이 viewpager에 부착 한 경우 호출기 페이지를 변경할 때마다,이

viePager.setOffscreenPageLimit(3); 

처럼 그것의 매개 변수를 설정할 수 있습니다, 그 조각 여전히 마지막 상태에있다.

+0

고마워, 이건 스크롤 된 위치를 재설정 탭 사이의 전환을 해결합니다! – tipi

5

우리는 비슷한 문제가 있습니다. 우리는 세로 RecyclerView입니다. 이 카테고리의 각 항목 RecyclerView은 Android TV 앱처럼 가로 RecyclerView입니다.

지원 라이브러리를 23.4.0에서 24.0.0으로 업그레이드 할 때 자동 스크롤이 갑자기 나타납니다. 특히 Activity을 열고 다시 이동하면 가로 RecyclerView이 위로 스크롤되어 현재 가로 RecyclerView 행이 잘리지 않고 행이 완전히 표시됩니다.

android:descendantFocusability="blocksDescendants"을 추가하면 문제가 해결됩니다.

그러나 나는 또한 another solution을 발견했습니다. 이 경우 수직 RecyclerViewFrameLayout 안에 있습니다. 이 FrameLayoutandroid:focusableInTouchMode="true"을 추가하면 문제가 해결됩니다.

third solution mentioned here도 있습니다. 기본적으로 자식/내부 RecyclerViewsetFocusable(false)을 호출합니다. 나는 이것을 해보지 않았다.

그런데 open issue on the AOSP이 있습니다.

관련 문제