2016-07-27 4 views
0

Ich habe versucht, android.gesture.GestureOverlayView in ScrollView zu implementieren. In meinem activity.xmlBlock Scroll in ScrollView beim Berühren von android.gesture.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> 

Aber wenn ich versuche, auf meine android.gesture.GestureOverlayView die Ansicht zu ziehen und es ist so inusable, und ich frage dann, wenn er, wie kann ich blockieren ein Scrollen Sie, wenn Sie auf android.gesture.GestureOverlayView tippen.

Antwort

0

ich auf diese Weise gelöst:

I

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; 
    } 
} 
} 

In meinem XML eine Scrollview mit CustomScrollView erweitert Ich habe Änderung Scroll mit meinem neuen erweiterten Klasse mit 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> 

Und in meiner 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) { 
} 
Verwandte Themen