我有自定义的scrollview编写,它可以正常工作,没有平板电脑的手写笔。 使用平板电脑时,此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;
}
}
您可以尝试一下。
if (MotionEvent.getToolType(TOOL_TYPE_STYLUS))
{
// disable scrollview
}
尝试以下:
@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;
}
}
覆盖internecepthoverlistener的覆盖能力。现在,如果启用了卷轴浏览器,则处理手写笔滚动滚动,一旦启用了scrollview = 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;
}
}