पॉप-अप मैसेज बनाना और दिखाना

Compose को आज़माएं
Android के लिए, Jetpack Compose को यूज़र इंटरफ़ेस (यूआई) टूलकिट के तौर पर इस्तेमाल करने का सुझाव दिया जाता है. Compose में सूचनाएं जोड़ने का तरीका जानें.

Snackbar का इस्तेमाल करके, उपयोगकर्ता को कोई छोटा मैसेज दिखाया जा सकता है. सूचनाओं के उलट, यह मैसेज कुछ समय बाद अपने-आप हट जाता है. Snackbar का इस्तेमाल, उन छोटे मैसेज के लिए किया जाता है जिन पर उपयोगकर्ता को कोई कार्रवाई नहीं करनी होती. उदाहरण के लिए, ईमेल भेजने वाला कोई ऐप्लिकेशन, Snackbar का इस्तेमाल करके उपयोगकर्ता को यह बता सकता है कि ऐप्लिकेशन ने ईमेल भेज दिया है.

CoordinatorLayout का इस्तेमाल करना

Snackbar को किसी व्यू से जोड़ा जाता है. अगर Snackbar को View क्लास से लिए गए किसी ऑब्जेक्ट से जोड़ा जाता है, तो यह बुनियादी फ़ंक्शन उपलब्ध कराता है. जैसे, सामान्य लेआउट ऑब्जेक्ट. हालांकि, अगर Snackbar को CoordinatorLayout से जोड़ा जाता है, तो Snackbar को ये अतिरिक्त सुविधाएं मिलती हैं:

  • उपयोगकर्ता, Snackbar को स्वाइप करके हटा सकता है.
  • Snackbar दिखने पर, लेआउट अन्य यूज़र इंटरफ़ेस (यूआई) एलिमेंट को मूव कर देता है. उदाहरण के लिए, अगर लेआउट में FloatingActionButton, है, तो Snackbar दिखाने पर लेआउट, बटन को ऊपर की ओर मूव कर देता है. ऐसा करने के बजाय, Snackbar को बटन के ऊपर नहीं दिखाया जाता. पहली इमेज में देखें कि यह कैसा दिखता है.

CoordinatorLayout क्लास, FrameLayout के फ़ंक्शन का सुपरसेट उपलब्ध कराती है. अगर आपका ऐप्लिकेशन पहले से FrameLayout का इस्तेमाल करता है, तो उस लेआउट को CoordinatorLayout से बदला जा सकता है. इससे Snackbar के सभी फ़ंक्शन का इस्तेमाल किया जा सकेगा. अगर आपका ऐप्लिकेशन अन्य लेआउट ऑब्जेक्ट का इस्तेमाल करता है, तो अपने मौजूदा लेआउट एलिमेंट को 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 ऑब्जेक्ट बनाना

स्टैटिक Snackbar.make() तरीके का इस्तेमाल करके, Snackbar ऑब्जेक्ट बनाएं. Snackbar बनाते समय, वह मैसेज तय करें जो दिखाया जाएगा. साथ ही, यह भी तय करें कि मैसेज कितने समय तक दिखेगा:

Kotlin

val mySnackbar = Snackbar.make(view, stringId, duration)

Java

Snackbar mySnackbar = Snackbar.make(view, stringId, duration);
view
वह व्यू जिससे Snackbar को अटैच करना है. यह तरीका, पास किए गए व्यू से लेकर CoordinatorLayout या विंडो डेकोर के कॉन्टेंट व्यू तक, व्यू के क्रम में खोज करता है. आम तौर पर, अपने कॉन्टेंट को शामिल करने वाले CoordinatorLayout को पास करना आसान होता है.
stringId
वह मैसेज दिखाने के लिए, रिसॉर्स आईडी जिसका इस्तेमाल करना है. यह फ़ॉर्मैट किया गया या फ़ॉर्मैट नहीं किया गया टेक्स्ट हो सकता है.
duration
मैसेज दिखाने का समय. यह 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();