उपयोगकर्ता को छोटा मैसेज दिखाने के लिए, Snackbar
का इस्तेमाल किया जा सकता है. सूचनाओं के उलट, यह मैसेज कुछ समय बाद अपने-आप हट जाता है. Snackbar
, ऐसे छोटे मैसेज के लिए सबसे सही है जिन पर उपयोगकर्ता को कोई कार्रवाई करने की ज़रूरत नहीं होती. उदाहरण के लिए, कोई ईमेल ऐप्लिकेशन, उपयोगकर्ता को यह बताने के लिए Snackbar
का इस्तेमाल कर सकता है कि ऐप्लिकेशन ने ईमेल भेज दिया है.
CoordinatorLayout का इस्तेमाल करना
कोई Snackbar
, किसी व्यू से अटैच है. Snackbar
, View
क्लास से मिले किसी भी ऑब्जेक्ट से जुड़ा होने पर, बुनियादी फ़ंक्शन उपलब्ध कराता है. जैसे, कोई भी सामान्य लेआउट ऑब्जेक्ट. हालांकि, अगर Snackbar
को किसी CoordinatorLayout
से जोड़ा जाता है, तो Snackbar
को कुछ और सुविधाएं मिलती हैं:
- उपयोगकर्ता,
Snackbar
को स्वाइप करके खारिज कर सकता है. Snackbar
दिखने पर, लेआउट अन्य यूआई एलिमेंट को मूव कर देता है. उदाहरण के लिए, अगर लेआउट मेंFloatingActionButton
है, तो बटन के ऊपरSnackbar
दिखाने के बजाय, लेआउटSnackbar
दिखाने पर बटन को ऊपर ले जाता है. यह कैसे दिखता है, यह देखने के लिए पहला चित्र देखें.
CoordinatorLayout
क्लास, FrameLayout
की सुविधाओं का सुपरसेट उपलब्ध कराती है.
अगर आपके ऐप्लिकेशन में पहले से ही FrameLayout
का इस्तेमाल किया जा रहा है, तो Snackbar
के सभी फ़ंक्शन चालू करने के लिए, उस लेआउट को CoordinatorLayout
से बदला जा सकता है. अगर आपका ऐप्लिकेशन अन्य लेआउट ऑब्जेक्ट का इस्तेमाल करता है, तो अपने मौजूदा लेआउट एलिमेंट को CoordinatorLayout
में रैप करें, जैसा कि इस उदाहरण में दिखाया गया है:
<android.support.design.widget.CoordinatorLayout android:id="@+id/myCoordinatorLayout" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- Here are the existing layout elements, now wrapped in a CoordinatorLayout. --> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <!-- ...Toolbar, other layouts, other elements... --> </LinearLayout> </android.support.design.widget.CoordinatorLayout>
अपने CoordinatorLayout
के लिए android:id
टैग सेट करें.
मैसेज दिखाने के लिए, आपके पास लेआउट का आईडी होना चाहिए.
पहली इमेज. Snackbar
दिखने पर, CoordinatorLayout
FloatingActionButton
को ऊपर ले जाता है.
मैसेज दिखाना
मैसेज दिखाने के दो चरण हैं. सबसे पहले, मैसेज के टेक्स्ट के साथ एक
Snackbar
ऑब्जेक्ट बनाएं. इसके बाद, उपयोगकर्ता को मैसेज दिखाने के लिए, उस ऑब्जेक्ट के show()
तरीके को कॉल किया जाता है.
स्नैकबार ऑब्जेक्ट बनाना
स्टैटिक Snackbar.make()
तरीके को कॉल करके, Snackbar
ऑब्जेक्ट बनाएं. Snackbar
बनाते समय, यह तय करें कि यह कौनसा मैसेज दिखाए और उसे कितनी देर के लिए दिखाया जाए:
Kotlin
val mySnackbar = Snackbar.make(view, stringId, duration)
Java
Snackbar mySnackbar = Snackbar.make(view, stringId, duration);
- देखें
-
Snackbar
को अटैच करने के लिए व्यू. यह तरीका, पास किए गए व्यू से लेकरCoordinatorLayout
या विंडो डेकोर के कॉन्टेंट व्यू तक, व्यू की हैरारकी को ऊपर की ओर खोजता है. आम तौर पर, अपने कॉन्टेंट कोCoordinatorLayout
के अंदर रखना आसान होता है. - stringId
- उस मैसेज का रिसॉर्स आईडी जिसे आपको दिखाना है. यह फ़ॉर्मैट किया गया या बिना फ़ॉर्मैट वाला टेक्स्ट हो सकता है.
- कुल समय
-
मैसेज दिखाने के लिए तय की गई समयावधि. यह
LENGTH_SHORT
याLENGTH_LONG
हो सकता है.
उपयोगकर्ता को मैसेज दिखाना
Snackbar
बनाने के बाद, उपयोगकर्ता को Snackbar
दिखाने के लिए, उसके show()
तरीके को कॉल करें:
Kotlin
mySnackbar.show()
Java
mySnackbar.show();
सिस्टम एक ही समय पर कई Snackbar
ऑब्जेक्ट नहीं दिखाता. इसलिए, अगर व्यू में फ़िलहाल कोई दूसरा Snackbar
दिख रहा है, तो सिस्टम आपके Snackbar
को सूची में जोड़ देता है और मौजूदा Snackbar
की समयसीमा खत्म होने या उसे खारिज किए जाने के बाद उसे दिखाता है.
अगर आपको उपयोगकर्ता को कोई मैसेज दिखाना है और आपको Snackbar
ऑब्जेक्ट के किसी भी यूटिलिटी तरीके को कॉल करने की ज़रूरत नहीं है, तो show()
को कॉल करने के बाद, आपको Snackbar
का रेफ़रंस नहीं रखना होगा. इस वजह से, एक स्टेटमेंट में Snackbar
बनाने और दिखाने के लिए, मेथड चेनिंग का इस्तेमाल करना आम बात है:
Kotlin
Snackbar.make( findViewById(R.id.myCoordinatorLayout), R.string.email_sent, Snackbar.LENGTH_SHORT ).show()
Java
Snackbar.make(findViewById(R.id.myCoordinatorLayout), R.string.email_sent, Snackbar.LENGTH_SHORT) .show();