Как определить когда ScrollView опущен вниз?
Как определить когда ScrollView опущен вниз?
Добрый вечер.
Разрабатываю приложение под андроид и столкнулся с необходимостью подзагрузки контента при достижения скроллом конца страницы.
Как это можно реализовать? Может есть какое-нибудь событие у ScrollView?
Искал в интернете, ничего полезного не нашел. Желательно с подробным примером. Спасибо.
Разрабатываю приложение под андроид и столкнулся с необходимостью подзагрузки контента при достижения скроллом конца страницы.
Как это можно реализовать? Может есть какое-нибудь событие у ScrollView?
Искал в интернете, ничего полезного не нашел. Желательно с подробным примером. Спасибо.
Re: Как определить когда ScrollView опущен вниз?
Пробовал этот метод: не работает:
Может просто не правильно использую. Нужен подробный пример использования с самого объявления скролла.
Код: Выделить всё
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt)
{
// Grab the last child placed in the ScrollView, we need it to determinate the bottom position.
View view = (View) getChildAt(getChildCount()-1);
// Calculate the scrolldiff
int diff = (view.getBottom()-(getHeight()+getScrollY()));
// if diff is zero, then the bottom has been reached
if( diff == 0 )
{
// notify that we have reached the bottom
Log.d(ScrollTest.LOG_TAG, "MyScrollView: Bottom has been reached" );
}
super.onScrollChanged(l, t, oldl, oldt);
}
Re: Как определить когда ScrollView опущен вниз?
Здравствуйте! Запомните состояние скроллинга конструкторе, а затем сверьте значение с высотой экрана устройства:wolfak писал(а):Пробовал этот метод: не работает:Может просто не правильно использую. Нужен подробный пример использования с самого объявления скролла.Код: Выделить всё
@Override protected void onScrollChanged(int l, int t, int oldl, int oldt) { // Grab the last child placed in the ScrollView, we need it to determinate the bottom position. View view = (View) getChildAt(getChildCount()-1); // Calculate the scrolldiff int diff = (view.getBottom()-(getHeight()+getScrollY())); // if diff is zero, then the bottom has been reached if( diff == 0 ) { // notify that we have reached the bottom Log.d(ScrollTest.LOG_TAG, "MyScrollView: Bottom has been reached" ); } super.onScrollChanged(l, t, oldl, oldt); }
Код: Выделить всё
private int scrollY;
private int dispY;
ScrollView scrollView;
scrollView = (ScrollView) rootView.findViewById(R.id.какой-то id);
// узнаем размеры экрана из класса Display
Display display = getWindowManager().getDefaultDisplay();
DisplayMetrics metricsB = new DisplayMetrics();
display.getMetrics(metricsB);
dispY = metricsB.heightPixels;
saveScroll();
// сравнивваем эти значения
if(scrollY > dispY){
// что-то делаем
}
// запоминаем значение скроллинга в переменную scrollY
private void saveScroll(){
scrollView.post(new Runnable(){
@Override
public void run() {
scrollY = scrollView.getScrollY();
Log.d("Координаты скроллинга", scrollY);
}
});
}
Re: Как определить когда ScrollView опущен вниз?
Добавляй последним элементом\футером вью "показать еще.." и подгружай по клику.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Re: Как определить когда ScrollView опущен вниз?
Это просто смешно)doter.ua писал(а):Добавляй последним элементом\футером вью "показать еще.." и подгружай по клику.
Re: Как определить когда ScrollView опущен вниз?
Спасибо, но метод не подходит, так как подгружать контент нужно не один раз.Sergey777 писал(а):Здравствуйте! Запомните состояние скроллинга конструкторе, а затем сверьте значение с высотой экрана устройства:wolfak писал(а):Пробовал этот метод: не работает:Может просто не правильно использую. Нужен подробный пример использования с самого объявления скролла.Код: Выделить всё
@Override protected void onScrollChanged(int l, int t, int oldl, int oldt) { // Grab the last child placed in the ScrollView, we need it to determinate the bottom position. View view = (View) getChildAt(getChildCount()-1); // Calculate the scrolldiff int diff = (view.getBottom()-(getHeight()+getScrollY())); // if diff is zero, then the bottom has been reached if( diff == 0 ) { // notify that we have reached the bottom Log.d(ScrollTest.LOG_TAG, "MyScrollView: Bottom has been reached" ); } super.onScrollChanged(l, t, oldl, oldt); }
Код: Выделить всё
private int scrollY; private int dispY; ScrollView scrollView; scrollView = (ScrollView) rootView.findViewById(R.id.какой-то id); // узнаем размеры экрана из класса Display Display display = getWindowManager().getDefaultDisplay(); DisplayMetrics metricsB = new DisplayMetrics(); display.getMetrics(metricsB); dispY = metricsB.heightPixels; saveScroll(); // сравнивваем эти значения if(scrollY > dispY){ // что-то делаем } // запоминаем значение скроллинга в переменную scrollY private void saveScroll(){ scrollView.post(new Runnable(){ @Override public void run() { scrollY = scrollView.getScrollY(); Log.d("Координаты скроллинга", scrollY); } }); }
Re: Как определить когда ScrollView опущен вниз?
для RecyclerView пример:
https://gist.github.com/ssinss/e06f12ef66c51252563e
Думаю и для ScrollView можно как-нибудь переделать
https://gist.github.com/ssinss/e06f12ef66c51252563e
Думаю и для ScrollView можно как-нибудь переделать