2015-03-02 3 views
0

Я сделал вертикальный вид прокрутки. Каково мое требование, мне просто нужно определить конец прокрутки и сделать кнопку видимой. Кто-нибудь скажет мне, как обнаружить, что вид прокрутки достиг дна?Как определить конец пользовательского прокрутки?

public class LockableVerScroll extends ScrollView { 

private boolean isScrollable; 
private ScrollListener scrollListener=null; 
public LockableVerScroll(Context context) 
{ 
    super(context); 
    isScrollable=true; 
} 

public LockableVerScroll(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    // TODO Auto-generated constructor stub 
    isScrollable=true; 
} 
public LockableVerScroll(Context context, AttributeSet attrs,int defStyle) 
{ 
    super(context, attrs, defStyle); 
    isScrollable=true; 
} 
public boolean isScrollable() 
{ 
    return isScrollable; 
} 
public boolean setScrollable(boolean mScrollable) 
{ 
    return mScrollable=isScrollable; 
} 
public void setScrollViewListener(ScrollListener mscrollListener) 
{ 
    this.scrollListener=mscrollListener; 

} 

необходимо помощь .. спасибо заранее. !!

ответ

1

Переопределить метод onScrollChanged() в вашем расширении ScrollView

@Override 
protected void onScrollChanged(int l1, int t1, int l2, int t2) { 

    int count = getChildCount(); 
    View view = (View) getChildAt(count - 1); 
    int delta = (view.getBottom() - (getHeight() + getScrollY() + view.getTop())); 
    if(delta == 0) 
    { 
     // scrollview has reached bottom, do whatever you want here. 
    } 
    super.onScrollChanged(l1, t1, l2, t1); 
} 

Попробуйте это. Это сработает.

EDIT:

if(delta == 0) 
{ 
    // define interface in Activity/Fragment and call its method here 
    mScrollListener.onScrollViewHitsBottom(); 
} 
+0

мне нужно поставить этот метод в класс выше или делать? –

+0

Да добавьте его в класс 'LockableVerScroll' –

+0

вы понимаете код? –

2
@Override 
protected void onScrollChanged(int l, int t, int oldl, int oldt) { 
     View view = (View) getChildAt(getChildCount()-1); 
     int diff = (view.getBottom()-(getHeight()+getScrollY()+view.getTop()));// Calculate the scrolldiff 
     if(diff == 0){ // if diff is zero, then the bottom has been reached 
      Log.d(ScrollTest.LOG_TAG, "MyScrollView: Bottom has been reached"); 
     } 
     super.onScrollChanged(l, t, oldl, oldt); 
} 
Смежные вопросы