2011-07-14 14 views
9

के भीतर मेरे पास है स्क्रॉल TextView और Gallery जब मैं TextView के लिए onTouchEvent(), मैं Gallery सोचा नहीं कर सकते नेविगेट और अगर मैं onTouchEvent() अक्षम करें, मैं सही स्क्रॉल और Gallery सोचा छोड़ कर सकते हैं सक्षम लेकिन नहीं कर सकते TextView में नीचे स्क्रॉल करें।TextView गैलरी

मैं चाल करने के लिए कोशिश की है, की तरह एक ही MotionEvent() दोनों Gallery और TextView को .. किसी भी विचार है कि यह कैसे हल करने के लिए भेज?

+0

@Nathan छवि, मैं एक नमूना बनाने के लिए कोशिश करता हूँ यहाँ कुछ काम कर उदाहरण है। –

उत्तर

1

आप गैलरी में scrollview उपयोग करने की कोशिश है की कोशिश करने के लिए है? ScrollView inside Gallery, both scrolling independently

+0

मैं इसे कल सुबह आज़माउंगा, धन्यवाद। –

+0

मैंने आपके द्वारा प्रदान किए गए कोड को संशोधित किया, थोड़ा सा, मेरी पोस्ट देखें –

0

onTouch घटना के insted तुम क्यों TextView के लिए onclick घटना का उपयोग नहीं करते अंदर गैलरी onMotionEvent onTouch घटना में में return false स्थापित करने के लिए

+0

'क्लिक' ईवेंट को संभालने में नहीं हूं, 'टच' ईवेंट को संभाला जा रहा हूं !! –

0

यह संभव है कि TextView और/या GalleryListView से दूर फोकस ले जा रहे हैं आप एक प्रयोग कर रहे हैं या स्क्रॉल क्षमता इस प्रकार है और यह सक्षम नहीं ऊपर स्क्रॉल करने के लिए कर रही है नीचे, TextView और गैलरी और के लिए फ़ोकस करने योग्य निकालने का प्रयास करें देखें कि क्या यह बिल्कुल मदद करता है। फिर भी आप अपने टचवेन्ट्स का उपयोग करने में सक्षम होना चाहिए ... बस एक विचार, सुनिश्चित नहीं है कि यह वास्तव में इस मुद्दे को ठीक करेगा या नहीं। इच्छा है कि मैं और मदद कर सकता हूं।

0

एक कस्टम व्यू बनाएं जो एक कंटेनर लेआउट बढ़ाता है और इसमें आपके स्क्रोल करने योग्य टेक्स्ट व्यू शामिल हैं। इसे अपनी गैलरी वस्तुओं के रूप में प्रयोग करें।

1

अरे आप इस कोड को यह आपकी समस्या में मदद मिलेगी

float oldx; 
float oldy; 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    boolean result = false; 
    if(event.getAction() == MotionEvent.ACTION_DOWN) { 
     result = super.onTouchEvent(event); 
    } else if (event.getAction() == MotionEvent.ACTION_UP) { 
     result = super.onTouchEvent(event); 
    } else if (event.getAction() == MotionEvent.ACTION_MOVE) { 
     /** 
     * Condition :: Math.abs(oldx - event.getX()) > 10 will check weather user had drag horizontal or vertical. 
     * You can change value 10 according to your requirement 
     */ 
     if(Math.abs(oldx - event.getX()) > 10) { 
      result = super.onTouchEvent(event); 
     } else { 
      result = true; 
     } 
    } 
    oldx = event.getX(); 
    oldy = event.getY(); 
    return result; 
} 
+0

क्षमा करें, यह अच्छी तरह से काम नहीं किया! –

1

मेरा उत्तर: समाधान के लिए एक बड़ा संकेत प्रदान करने के लिए @teepee के लिए

public class CustomGallery extends Gallery { 

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

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

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

    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
     float r = (velocityX > 0 ? Math.min(800f, velocityX) : Math.max(-800f, velocityX)); 
     return super.onFling(e1, e2, r, velocityY); 
    } 

    float oldX, oldY; 
    boolean isDown = false; 

    @Override 
    public boolean onInterceptTouchEvent(MotionEvent ev) { 
     int action = ev.getAction(); 
     switch (action) { 
      case MotionEvent.ACTION_DOWN: 
       oldX = ev.getX(); 
       oldY = ev.getY(); 
       isDown = true; 
       return super.onInterceptTouchEvent(ev); 

      case MotionEvent.ACTION_MOVE: 
       if (isDown) { 
        float diffX = Math.abs(ev.getX() - oldX); 
        float diffY = Math.abs(ev.getY() - oldY) + 20f; 
        if (diffY > diffX) { 
         return false;// handled by TextView 
        } 
       } 
       return true;// handled by Gallery 

      case MotionEvent.ACTION_UP: 
       isDown = false; 
       return super.onInterceptTouchEvent(ev); 

      default: 
       return super.onInterceptTouchEvent(ev); 
     } 
    } 

} 

धन्यवाद: डी

संबंधित मुद्दे