Какая альтернатива?
«естественная» альтернатива этой проблеме, при которой вы не хотите полагаться на NestedScrollView, - это использование параметра ViewType RecyclerView и раздувание отдельных представлений в зависимости от вашего контента. Так что все это прокручивается благодаря RecyclerView, и все это работает. Но это немного больше работы, так как вам нужно создать типы представлений для всего различного контента и подготовить список, чтобы RecyclerView получил хороший отформатированный список общего элемента, который может описать то, что вам нужно отобразить. Это больше работы, но как только вы заработаете, это очень надежно.
Глядя на свой макет, у вас есть следующая иерархия:
<SwipeRefresh>
<LinearLayout>
<NestedScrollView>
<LinearLayout>
<RecyclerView />
<CardView>
<toro.widget.Container />
</CardView>
</LinearLayout>
</NestedScrollView>
</LinearLayout>
</SwipeRefresh>
Если бы мне не нужно было использовать NestedScrollView, я бы сгладил его с помощью Constraint Layout. Насколько я понимаю вашу компоновку, у вас есть окно ресайклера с фиксированной высотой 80dp, а ниже вы подходите под это автомобильное изображение, в котором есть контейнер для чего-то (видеоплеер?), Закрепленный внизу.
Вы упоминаете, что вам нужно использовать NestedScrollView, и я не знаю почему, но если вы по какой-то причине понимаете, что вам это не нужно , я бы реализовал макеты так:
<SwipeRefresh>
<ConstraintLayout>
<RecyclerView />
<CardView>
<Toro Container>
</CardView>
</ConstraintLayout>
</SwipeRefresh>
В этом случае смахивание будет охватывать ConstraintLayout, который будет использовать весь экран, предоставленный / для макета смахивания, и RecyclerView будет на высоте 80dp вверху, затем будет CardView, использующий все оставшееся пространство. и внутри Toro Container также будет использовать столько места, сколько предоставляется CardView.
Если вы, возможно, поясните, зачем вам нужен NestedScrollView, то, возможно, мы можем переосмыслить это, но если не считать, что вам нужно trully , то вам нужно будет поиграть (и, возможно, расширить NestedScrollView), чтобы увидеть, что делает фокус, когда вы касаетесь этих детей. Отладьте, куда направлен фокус, и возьмите его оттуда. : /