Android 当水平滚动视图到达右侧时?
有没有办法知道HorizontalScrollView何时达到了正确的限制?是的,但首先必须重写HorizontalScrollView类并提供自己的侦听器。由于某些原因,SDK不允许您直接访问OnScrollChanged侦听器 请执行以下操作:Android 当水平滚动视图到达右侧时?,android,android-layout,Android,Android Layout,有没有办法知道HorizontalScrollView何时达到了正确的限制?是的,但首先必须重写HorizontalScrollView类并提供自己的侦听器。由于某些原因,SDK不允许您直接访问OnScrollChanged侦听器 请执行以下操作: public class FixedScrollView extends HorizontalScrollView { private ScrollViewListener scrollViewListener = null; pu
public class FixedScrollView extends HorizontalScrollView
{
private ScrollViewListener scrollViewListener = null;
public FixedScrollView(Context context)
{
super(context);
}
public FixedScrollView(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
}
public FixedScrollView(Context context, AttributeSet attrs)
{
super(context, attrs);
}
public void setScrollViewListener(ScrollViewListener scrollViewListener)
{
this.scrollViewListener = scrollViewListener;
}
@Override
protected void onScrollChanged(int x, int y, int oldx, int oldy)
{
super.onScrollChanged(x, y, oldx, oldy);
if (scrollViewListener != null)
{
scrollViewListener.onScrollChanged(this, x, y, oldx, oldy);
}
}
public interface ScrollViewListener
{
void onScrollChanged(FixedScrollView scrollView, int x, int y, int oldx, int oldy);
}
}
然后您可以在代码中使用它,如下所示:
FixedScrollView scrollView = (FixedScrollView) findViewById(R.id.scroller);
设置onScrollChangeListener:
scrollView.setScrollViewListener(scrollerChanged);
然后在侦听器中执行以下操作以检测边缘:
ScrollViewListener scrollerChanged = new ScrollViewListener()
{
@Override
public void onScrollChanged(FixedScrollView scrollView, int x, int y, int oldx, int oldy)
{
int maxScrollX = scrollView.getChildAt(0).getMeasuredWidth() - scrollView.getMeasuredWidth();
if (scrollView.getScrollX() == 0)
{
//Left side
}
else if (scrollView.getScrollX() == maxScrollX)
{
//Right side
}
else
{
//Neither left nor right
}
}
};