【问题标题】:Block scroll in ScrollView when touch on android.gesture.GestureOverlayView触摸 android.gesture.GestureOverlayView 时阻止 ScrollView 中的滚动
【发布时间】:2016-07-27 18:51:09
【问题描述】:

我尝试在 ScrollView 中实现 android.gesture.GestureOverlayView。 在我的 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 时阻止滚动。

【问题讨论】:

    标签: android android-layout android-gesture


    【解决方案1】:

    我是这样解决的:

    我用 CustomScrollView

    扩展了一个 ScrollView
    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 中,我使用带有 id 的新扩展类更改了 ScrollView

    <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) {
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-06
      • 1970-01-01
      • 2013-05-04
      相关资源
      最近更新 更多