如何禁止Scrollview滚动手写笔?

时间:2017-02-28 10:24:08

标签: android scrollview stylus-pen

我有自定义的scrollview编写,没有来自平板电脑的手写笔工作正常。  使用Tablet手写笔时,即使禁用了滚动功能,此customScrollview也允许手写笔执行滚动。

public class CustomScrollView extends ScrollView {

    private boolean enabled = false;

    public CustomScrollView(Context context) {
        super(context);
    }

    public CustomScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        return enabled;
    }

    public void setEnabled(boolean enabled) {
        this.enabled = enabled;
    }

    public boolean getEnabled() {
        return this.enabled;
    }
}

3 个答案:

答案 0 :(得分:0)

你可以尝试一下。

final

答案 1 :(得分:0)

试试这个:

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
    if (ev.getToolType(TOOL_TYPE_STYLUS)) { 
        // also, here you should check if it should be disabled at this point
        return !enabled;
    } else {
        return enabled;
    }
}

答案 2 :(得分:0)

覆盖onInterceptHoverListener诀窍。 现在,如果启用了scrollview,则会处理Stylus onhover滚动,一旦scrollview enabled = false,就不会处理相同的滚动。

    public class CustomScrollView extends ScrollView {

        private boolean enabled = false;

        public CustomScrollView(Context context) {
            super(context);
        }

        public CustomScrollView(Context context, AttributeSet attrs) {
            super(context, attrs);
        }

        public CustomScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
        }

        @Override
        public boolean onInterceptTouchEvent(MotionEvent ev) {
            return enabled;
        }

        public void setEnabled(boolean enabled) {
            this.enabled = enabled;
        }

      @Override
        public boolean onInterceptHoverEvent(MotionEvent event) {
   if (this.enabled)
        {
            return false;
        }
        else
        {
          return true;
        }

}

       public boolean getEnabled() {
            return this.enabled;
        }
    }