1

Мне нужно прислушиваться к изменению позиции определенного вида. Представление может быть в любом месте, например, оно может быть элементом представления списка или ресайклера или может быть дочерним элементом прокрутки или вложенного прокрутки и т. Д. Но всякий раз, когда позиция на экране представления была изменена (всякий раз, когда x, y обновляются), мне нужно получить уведомление. Я попыталсяКак установить прослушиватель движения для просмотра

view.setOnScrollChangeListener(new View.OnScrollChangeListener() { 
     @Override 
     public void onScrollChange(View view, int i, int i1, int i2, int i3) { 
      Log.d(TAG, "Position changed"); 
     } 
    }); 

и

view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 
     @Override 
     public void onGlobalLayout() { 
      Log.d(TAG, "Layout changed"); 
     } 
    }); 

Но не похоже на работу

Я попытался GestureDetectorCompat также, Но в броске, х, у позиции не точны.

Есть ли решение для моей проблемы? Надеюсь, что моя проблема понятна. Заранее спасибо!!

+0

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

+0

В основном у меня есть 2 мнения. Одна из них - это моя панель инструментов, а другая - в любом месте действия (или фрагмента) под панелью инструментов. Поэтому всякий раз, когда этот снизу приближается к панели инструментов, мне нужно изменить интенсивность текста и фона на панели инструментов (например, изменить альфа заголовка панели инструментов и угасать цвет фона панели инструментов). Также, когда он отходит от панели инструментов. Поэтому всегда мне нужно знать, что это представление - это расстояние от панели инструментов впереди. – Drd

+0

Также этот вид может быть в любом месте экрана, например, название списка или обычный линейный макет и т. Д. На основе разных экранов. Помогает ли вам понять мое требование? – Drd

ответ

3

Я думаю, вы можете использовать обратный вызов ViewTreeObserver.OnScrollChangedListener. Это обратный вызов, вызванный, когда что-то в дереве просмотра было прокручено. Поэтому попробуйте добавить этого слушателя для вашего просмотра, которое движется.

view.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() { 
     @Override 
     public void onScrollChanged() { 
      // Do what you want to do when the view has been scrolled 
     } 
    }); 
+0

Отличный !! Это именно то, чего я хотел. Теперь я мог отслеживать движение, используя этот обратный вызов. Благодаря!! – Drd

 Смежные вопросы

  • Нет связанных вопросов^_^