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

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

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

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

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

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

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

<androidx.coordinatorlayout.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/myCoordinatorLayout"
    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>

</androidx.coordinatorlayout.widget.CoordinatorLayout>

अपने CoordinatorLayout के लिए android:id टैग सेट करें. मैसेज दिखाने के लिए, आपको लेआउट के आईडी की ज़रूरत होगी.

पहली इमेज. Snackbar दिखने पर, CoordinatorLayout FloatingActionButton को ऊपर की ओर ले जाता है.

कोई मैसेज दिखाना

मैसेज दिखाने के लिए, दो चरण पूरे करने होते हैं. सबसे पहले, मैसेज के टेक्स्ट के साथ एक Snackbar ऑब्जेक्ट बनाएं. इसके बाद, उस ऑब्जेक्ट के show() तरीके को कॉल करके, उपयोगकर्ता को मैसेज दिखाया जाता है.

स्नैकबार ऑब्जेक्ट बनाना

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

val mySnackbar = Snackbar.make(view, stringId, duration)
देखें
वह व्यू जिसमें Snackbar को अटैच करना है. यह तरीका, पास किए गए व्यू से व्यू हैरारकी को तब तक खोजता है, जब तक कि वह CoordinatorLayout या विंडो डेकोर के कॉन्टेंट व्यू तक न पहुंच जाए. आम तौर पर, अपने कॉन्टेंट को शामिल करने वाले CoordinatorLayout को पास करना आसान होता है.
stringId
वह संसाधन आईडी जिसे आपको दिखाना है. यह फ़ॉर्मैट किया गया या बिना फ़ॉर्मैट किया गया टेक्स्ट हो सकता है.
कुल समय
मैसेज दिखाने की अवधि. यह LENGTH_SHORT या LENGTH_LONG हो सकता है.

उपयोगकर्ता को मैसेज दिखाना

Snackbar बनाने के बाद, उसके show() तरीके को कॉल करके उपयोगकर्ता को Snackbar दिखाएं:

mySnackbar.show()

सिस्टम एक साथ कई Snackbar ऑब्जेक्ट नहीं दिखाता. इसलिए, अगर व्यू में फ़िलहाल कोई दूसरा Snackbar दिख रहा है, तो सिस्टम आपके Snackbar को कतार में लगा देता है. साथ ही, इसे मौजूदा Snackbar के खत्म होने या खारिज होने के बाद दिखाता है.

अगर आपको उपयोगकर्ता को कोई मैसेज दिखाना है और आपको Snackbar ऑब्जेक्ट के किसी भी यूटिलिटी तरीके को कॉल करने की ज़रूरत नहीं है, तो show() को कॉल करने के बाद, आपको Snackbar का रेफ़रंस रखने की ज़रूरत नहीं है. इस वजह से, एक ही स्टेटमेंट में Snackbar बनाने और दिखाने के लिए, अक्सर मेथड चेनिंग का इस्तेमाल किया जाता है:

Snackbar.make(
    findViewById(R.id.myCoordinatorLayout),
    R.string.email_sent,
    Snackbar.LENGTH_SHORT
).show()