如何检测ScrollView是否滚动

时间:2016-09-01 05:19:29

标签: android ontouchlistener android-scrollview

我知道之前已经问过这个问题我已经完成了但是他们没有解决我的问题。

我的ScrollView带有一个带有imageview的LinearLayout。我已经使用ontouchListner来imageview给它们点击这样的效果

switch (motionEvent.getAction()) {
        case MotionEvent.ACTION_DOWN:
            view.getBackground().setColorFilter(0xCCCDDC39, PorterDuff.Mode.SRC_ATOP);
            view.invalidate();
            break;
        case MotionEvent.ACTION_CANCEL:
        case MotionEvent.ACTION_UP:
            view.getBackground().clearColorFilter();
            view.invalidate();
            startActivity(view.getId());
            break;
}

但问题是每当我滚动ontouchlistner被称为imageview并且图像被点击。我不想在每次滚动时都这样,因为这不允许我滚动。请帮忙

2 个答案:

答案 0 :(得分:3)

如果我正确理解您的问题,您可以使用onClickListenerselector来实现此目的。此外,您不必为所选状态保留重复的图像集。您可以像这样

动态创建选择器
        StateListDrawable states = new StateListDrawable();
        Drawable drawable = ContextCompat.getDrawable(this, R.drawable.your image);
        drawable.setColorFilter(0xCCCDDC39, PorterDuff.Mode.SRC_ATOP);
        states.addState(new int[] {android.R.attr.state_pressed}, drawable);
        yourView.setBackground(states);

答案 1 :(得分:0)

  

确定短暂的asnwer

scroll.setOnScrollChangeListener(new View.OnScrollChangeListener() {
        @Override
        public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {


                    int x = scrollY - oldScrollY;
                    if (x > 0) {
                        //scroll up
                    } else if (x < 0) {
                        //scroll down
                    } else {

                    }

        }
    });