触摸android.gesture.GestureOverlayView时阻止ScrollView中的滚动 [英] Block scroll in ScrollView when touch on android.gesture.GestureOverlayView

查看:90
本文介绍了触摸android.gesture.GestureOverlayView时阻止ScrollView中的滚动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试在ScrollView中实现android.gesture.GestureOverlayView。
在我的 activity.xml

I tried to implement android.gesture.GestureOverlayView in ScrollView. In my activity.xml

<?xml version="1.0" encoding="utf-8"?>
   <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:id="@+id/scrollViewreceipt"
   >
   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical" android:layout_width="match_parent"
   android:layout_height="match_parent">
       <include
       android:id="@+id/include1"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       layout="@layout/toolbar" />
      <Spinner
        android:id="@+id/custom_spinner"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:theme="@android:style/Theme.Holo.Light.DarkActionBar"/>

      <ListView
        android:id="@+id/customList"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:layout_marginTop="15dp" />

      <android.gesture.GestureOverlayView
           android:id="@+id/signaturePad"
            android:layout_width="match_parent"
            android:layout_height="80dp"
            android:layout_weight="5"
            android:background="#d3d3d3"
            android:eventsInterceptionEnabled="true"
            android:fadeEnabled="false"
            android:gestureColor="#333"
            android:gestureStrokeLengthThreshold="0.1"
            android:gestureStrokeType="multiple"
            android:fadeOffset="5000"
            android:orientation="vertical" >
        </android.gesture.GestureOverlayView>

       <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="testImage"
            android:text="test"/>
</LinearLayout>

但是当我尝试绘制时在我的android.gesture.GestureOverlayView上查看滚动视图,因此它是无法使用的,所以我问在触摸android.gesture.GestureOverlayView时是否要阻止滚动。

But when i try to draw on my android.gesture.GestureOverlayView the view scroll and so it's inusable, and so i ask if how can i block a scroll when touch on android.gesture.GestureOverlayView.

推荐答案

我是这样解决的:

我用 CustomScrollView

public class CustomScrollView extends ScrollView {
 private boolean enableScrolling = true;

public boolean isEnableScrolling() {
    return enableScrolling;
}

public void setEnableScrolling(boolean enableScrolling) {
    this.enableScrolling = enableScrolling;
}

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

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

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

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {

    if (isEnableScrolling()) {
        return super.onInterceptTouchEvent(ev);
    } else {
        return false;
    }
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
    if (isEnableScrolling()) {
        return super.onTouchEvent(ev);
    } else {
        return false;
    }
}
}

在我的XML中,我有了更改ScrollView具有我的新扩展类ID

In my XML I have change ScrollView with my new extended class with id

<com.itmind.spac.spacapp.custom_extends.CustomScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/scrollViewreceipt"
>......</com.itmind.spac.spacapp.custom_extends.CustomScrollView>

在我的 ActivityClass

public class CustomActivity  implements GestureOverlayView.OnGestureListener {
CustomScrollView myScrollView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState, R.layout.activity_receipts);

    GestureOverlayView signaturePad = (GestureOverlayView) findViewById(R.id.signaturePad);
    myScrollView = (CustomScrollView) findViewById(R.id.scrollViewreceipt);
    assert myScrollView != null;


    assert signaturePad != null;
    signaturePad.addOnGestureListener(this);
}
@Override
public void onGestureStarted(GestureOverlayView overlay, MotionEvent event) {
    myScrollView.setEnableScrolling(false);
}

@Override
public void onGesture(GestureOverlayView overlay, MotionEvent event) {
}

@Override
public void onGestureEnded(GestureOverlayView overlay, MotionEvent event) {
    myScrollView.setEnableScrolling(true);
}

@Override
public void onGestureCancelled(GestureOverlayView overlay, MotionEvent event) {
}

这篇关于触摸android.gesture.GestureOverlayView时阻止ScrollView中的滚动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆