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

标签 android android-layout

有什么方法可以知道 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/

相关文章:

Android模拟器SD卡问题

android - Cordova 未捕获类型错误 : Cannot set property 'require' of undefined

android - 如何以编程方式将内容添加到自定义 XML 布局?

android - 如何删除 ListView 中的边框?

java - textview不显示文本

android - 在方向更改时替换布局

java - Android - 光标找不到列

android - 在 Android TV 模拟器上运行时缺少 MainActivity 错误

java - 如何将 BEGIN_OBJECT 转换为 BEGIN_ARRAY

android - 自动截断 TextView 文本以免与另一个 TextView 重叠