我有自定义的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;
}
}
答案 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;
}
}