прокрутите пункт повторного просмотра в верхней части представления прокрутки - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь прокрутить элемент представления переработчика в верхнюю часть экрана, когда пользователь нажимает на элемент.

Мой макет настроен следующим образом:

- <FrameLayout>
--   <ScrollView>
---     <LinearLayout /> // static content
---     <RecyclerView /> // dynamic content
---     <LinearLayout /> // static content
--   </ScrollView>
-- </FrameLayout>

Чего я хочу достичь, так это когда я нажимаю на элемент в программе повторного просмотра.Он должен прокрутиться до верхней части экрана.

Я пробовал следовать до сих пор, но безуспешно.

-> 
  // use recycler view's layout manager to scroll.
  recyclerView.layoutManager.scrollToPositionWithOffset(position)

->
 // use smooth scroll to scroll
 recyclerView.smoothScrollToPosition(ItemPos)

->
  // use main scroll view to scroll on the screen. This kind of works but does not move item to top of the page.
  val y = recyclerView.y + recyclerView.getChildAt(position).y
  activity.binding.mainScrollview?.smoothScrollTo(0, y.toInt())

Любая помощь приветствуется.Спасибо

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Похоже, что в вашем случае вам не хватает предметов.

Вы не можете получить прокрутку recyclerView ниже, чем последний элемент. Таким образом, вы можете либо создать собственную реализацию recyclerView, расширив ее, получить добавлениепрокручивая суммы, и когда вы дойдете до последнего элемента, вы добавите переводY в recyclerView.

Или вы можете добавить несколько фиктивных элементов. Таким образом, они могут иметь вид с шириной и высотой ваших обычных элементов.должен это сделать.

0 голосов
/ 14 февраля 2019

Пробовали ли вы функцию layoutManager scrollToPositionWithOffset:

thirdItem.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            LinearLayoutManager layoutManager = (LinearLayoutManager) mRecyclerView
                    .getLayoutManager();
            layoutManager.scrollToPositionWithOffset(0, 0);
        }
});
...