2016-08-08 13 views
5

मेरे पास मेरी एपकोपेट गतिविधि में एक स्नैकबार है। इसमें एक बटन ठीक है जो स्नैकबार को खारिज कर देता है। यह परफैक्ट काम कर रहा है। लेकिन मैं स्वाइप पर स्नैकबार को खारिज नहीं कर सकता (बाएं से दाएं)।स्नैकबार स्वाइप पर खारिज नहीं हो रहा है

बाद

.... Snackbar के लिए मेरे कोड है

final Snackbar snackbar = Snackbar 
           .make(view, "Error Message", Snackbar.LENGTH_INDEFINITE); 

         snackbar.setAction("OK", new View.OnClickListener() { 
            @Override 
            public void onClick(View view) { 
              snackbar.dismiss(); 
            } 
           }); 

         snackbar.show(); 

संपादित करें 1

मैं अपने गतिविधि के XML लेआउट में माता पिता के लेआउट के रूप में सापेक्ष लेआउट है।

उत्तर

18

स्नैकबार को इसके रूट लेआउट के रूप में एक कोऑर्डिनेटर लेआउट की आवश्यकता होती है या इसके कुछ शीर्ष पर, इसके विभिन्न संचालन करने के लिए स्वाइप करने के लिए स्वाइप करें। आपको अपने लेआउट पदानुक्रम में कुछ ऐसा होना चाहिए।

आगे यह देखने के लिए कि हम Snackbar.make() विधि में पास करते हैं, कोऑर्डिनेटर को खोजने के लिए उपयोग किया जाता है, जहां दृश्य पदानुक्रम में कुछ है। इस दृश्य से रूट को रूट को देखने के लिए रूट को देखने के लिए यह तरीका है जिस पर यह स्नैकबार दिखा सकता है और इसके एनिमेशन और संचालन कर सकता है।

तो रूट लेआउट को कोऑर्डिनेटर लेआउट में बदलने का प्रयास करें और आपकी समस्या हल हो जाएगी।

+4

वहाँ रेखीय लेआउट या किसी अन्य लेआउट के साथ इस व्यवहार को लागू करने के लिए किसी भी तरह है ??? – Intimate

0

के संदर्भ में अश्विनी कुमार का उत्तर। मैंने देखा अंतरंग पूछा कि क्या LinearLayout के साथ इसे लागू करने का कोई तरीका है या नहीं। match_parentandroid:layout_height और android:layout_height विशेषताओं में match_parent के साथ एक समन्वयक के साथ अपने मूल लीनियरआउटआउट को सरल बनाएं।

यह आपकी मूल व्यवस्था बनाए रखेगा और फिर भी सुनिश्चित करेगा कि स्नैकबार स्वाइप करने योग्य है।

Snackbar अब इस तरह दिखेगा:

टुकड़े के लिए -

Snackbar.make(getView(), "Error Message", Snackbar.LENGTH_INDEFINITE); 

गतिविधियों के लिए -

Snackbar.make(this.findViewById(android.R.id.content), "Error Message", Snackbar.LENGTH_INDEFINITE); 

मान लिया जाये कि आप CoordinatorLayout साथ अपने पूरे लेआउट wraped और इस रूट लेआउट है।

2

मैंने एक लाइब्रेरी लिखी है जो कोऑर्डिनेटरलाउट प्रदान किए बिना भी मंद व्यवहार के लिए स्वाइप का समर्थन करती है। उपयोगकर्ता इसे खारिज करने के लिए बाएं या दाएं दोनों स्वाइप कर सकते हैं (आप केवल मूल रूप से स्वाइप कर सकते हैं)। इसमें प्रोग्रेसबार और अन्य सामान भी शामिल है। इसे https://github.com/tingyik90/snackprogressbar आज़माएं।

आपको केवल स्नैक प्रोग्रेसबार बनाने और स्वाइप करने की अनुमति देने की आवश्यकता है। नमूना कोड:

SnackProgressBar messageType = new SnackProgressBar( SnackProgressBar.TYPE_MESSAGE, "Your message") .setSwipeToDismiss(true)

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