Android onScrolled не вызывается, когда View установлен в GONE - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь скрыть RelativeLayout при прокрутке вверх и показать его при прокрутке вниз.onScroll работает отлично и вызывается каждый раз, пока для View не установлено значение GONE.

final RelativeLayout placeHeaderMain = findViewById(R.id.place_header_main);

mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);
        if (dy > 0) {
            // Scrolling up
            placeHeaderMain.setVisibility(View.GONE);

        } else {
            // Scrolling down
           placeHeaderMain.setVisibility(View.VISIBLE);
        }
    }
});

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

Заранее спасибо.

Ответы [ 2 ]

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

Достаточно ли пунктов для прокрутки?

Этот код выше не сработает, если dy == 0.Для создания свитка может быть недостаточно предметов, и он вернет dy равный 0, отец больше не будет называть onScroll(...)

Что dyу вас есть когда RelativeLayout спрятался?Попробуйте проверить этот метод ниже:

@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
    super.onScrollStateChanged(recyclerView, newState);
}
0 голосов
/ 05 февраля 2019

Попытайтесь установить вид на НЕВИДИМ , а не на УДАЛЕН .
, когда вы установите любой вид на View.GONE, он невидим и не занимает меставнутри вашего макета, но когда вы устанавливаете вид на View.INVISIBLE, как прежде, он будет невидимым, но в отличие от View.GONE ваш вид по-прежнему занимает место внутри макета.

...