Страница 1 из 1
Как определить когда ScrollView опущен вниз?
Добавлено: 18 янв 2016, 21:37
wolfak
Добрый вечер.
Разрабатываю приложение под андроид и столкнулся с необходимостью подзагрузки контента при достижения скроллом конца страницы.
Как это можно реализовать? Может есть какое-нибудь событие у ScrollView?
Искал в интернете, ничего полезного не нашел. Желательно с подробным примером. Спасибо.
Re: Как определить когда ScrollView опущен вниз?
Добавлено: 18 янв 2016, 21:38
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);
}
Может просто не правильно использую. Нужен подробный пример использования с самого объявления скролла.
Re: Как определить когда ScrollView опущен вниз?
Добавлено: 23 янв 2016, 15:48
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 опущен вниз?
Добавлено: 23 янв 2016, 17:02
doter.ua
Добавляй последним элементом\футером вью "показать еще.." и подгружай по клику.
Re: Как определить когда ScrollView опущен вниз?
Добавлено: 24 янв 2016, 10:29
wolfak
doter.ua писал(а):Добавляй последним элементом\футером вью "показать еще.." и подгружай по клику.
Это просто смешно)
Re: Как определить когда ScrollView опущен вниз?
Добавлено: 24 янв 2016, 12:46
wolfak
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 опущен вниз?
Добавлено: 25 янв 2016, 06:59
klblk
для RecyclerView пример:
https://gist.github.com/ssinss/e06f12ef66c51252563e
Думаю и для ScrollView можно как-нибудь переделать