gpt4 book ai didi

android - Horizo​​ntalScrollView 何时到达右侧?

转载 作者:行者123 更新时间:2023-11-29 21:51:22 24 4
gpt4 key购买 nike

有什么方法可以知道 Horizo​​ntalScrollView 何时达到其正确的限制?

最佳答案

是的,但首先您必须覆盖 Horizo​​ntalScrollView 类并提供您自己的监听器。由于某些原因,SDK 不允许您直接访问 OnScrollChanged 监听器。

执行以下操作:

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
}
}
};

关于android - Horizo​​ntalScrollView 何时到达右侧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14341093/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com