2016-07-27 28 views
0

觸摸ScrollView時阻止滾動我試圖在ScrollView中實現android.gesture.GestureOverlayView。 在我activity.xml當在android.geture.GestureOverlayView

<?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繪製視圖滾動,所以它是inusable,所以我問我怎樣才能阻止在android.gesture.GestureOverlayView上觸摸時滾動。

回答

0

我以這種方式解決:

我伸出一個滾動型與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我有變化滾動型與我的新擴展的類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) { 
}