ऐप्लिकेशन बार की मदद से, उपयोगकर्ता की कार्रवाइयों के लिए बटन जोड़े जा सकते हैं. इस सुविधा की मदद से, ऐप्लिकेशन के सबसे ऊपर मौजूद कॉन्टेक्स्ट के लिए, सबसे ज़रूरी कार्रवाइयां की जा सकती हैं. उदाहरण के लिए, जब कोई उपयोगकर्ता फ़ोटो रोल देख रहा हो, तो फ़ोटो ब्राउज़ करने वाला ऐप्लिकेशन सबसे ऊपर शेयर करें और एल्बम बनाएं बटन दिखा सकता है. जब उपयोगकर्ता किसी फ़ोटो को देखता है, तो ऐप्लिकेशन में काटें और फ़िल्टर करें बटन दिख सकते हैं.
ऐप्लिकेशन बार में जगह सीमित होती है. अगर कोई ऐप्लिकेशन, ऐप्लिकेशन बार में फ़िट होने से ज़्यादा कार्रवाइयों का एलान करता है, तो ऐप्लिकेशन बार ज़्यादा कार्रवाइयों को ओवरफ़्लो मेन्यू में भेजता है. ऐप्लिकेशन यह भी तय कर सकता है कि कोई कार्रवाई, ऐप्लिकेशन बार पर दिखने के बजाय, हमेशा ओवरफ़्लो मेन्यू में दिखे.
![ऐक्शन बार आइकॉन के साथ, Android ऐप्लिकेशन में Now दिखाने वाली इमेज](https://developer.android.google.cn/static/images/ui/notifications/actions_actionbar.png?authuser=1&hl=hi)
ऐक्शन बटन जोड़ना
ऐक्शन ओवरफ़्लो में मौजूद सभी ऐक्शन बटन और अन्य आइटम, एक्सएमएल मेन्यू रिसॉर्स में तय किए जाते हैं. ऐक्शन बार में ऐक्शन जोड़ने के लिए, अपने प्रोजेक्ट की res/menu/
डायरेक्ट्री में एक नई एक्सएमएल फ़ाइल बनाएं.
आपको ऐक्शन बार में जो आइटम शामिल करने हैं उनके लिए एक <item>
एलिमेंट जोड़ें. इस बारे में, यहां दी गई मेन्यू एक्सएमएल फ़ाइल के सैंपल में बताया गया है:
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <!-- "Mark Favorite", must appear as action button if possible. --> <item android:id="@+id/action_favorite" android:icon="@drawable/ic_favorite_black_48dp" android:title="@string/action_favorite" app:showAsAction="ifRoom"/> <!-- Settings, must always be in the overflow. --> <item android:id="@+id/action_settings" android:title="@string/action_settings" app:showAsAction="never"/> </menu>
app:showAsAction
एट्रिब्यूट से यह पता चलता है कि ऐक्शन को ऐप्लिकेशन बार पर बटन के तौर पर दिखाया जाएगा या नहीं. अगर आपने app:showAsAction="ifRoom"
कोटेशन मार्क सेट किया है, तो ऐप्लिकेशन बार में जगह होने पर, ऐक्शन बटन के तौर पर दिखेगा. उदाहरण के लिए, कोड के पसंदीदा ऐक्शन में ऐसा किया गया है. अगर स्क्रीन पर ज़रूरत के मुताबिक जगह नहीं है, तो अतिरिक्त कार्रवाइयां, 'ज़्यादा विकल्प' मेन्यू में भेज दी जाती हैं. अगर app:showAsAction="never"
को सेट किया जाता है, तो ऐक्शन हमेशा ओवरफ़्लो मेन्यू में दिखता है और ऐप्लिकेशन बार में नहीं दिखता. उदाहरण के लिए, कोड के सेटिंग ऐक्शन में.
अगर ऐक्शन, ऐप्लिकेशन बार में दिखता है, तो सिस्टम ऐक्शन के आइकॉन का इस्तेमाल, ऐक्शन बटन के तौर पर करता है. Material Icons में आपको कई काम के आइकॉन मिल सकते हैं.
कार्रवाइयों का जवाब देना
जब उपयोगकर्ता ऐप्लिकेशन बार में मौजूद किसी आइटम को चुनता है, तो सिस्टम आपकी ऐक्टिविटी के onOptionsItemSelected()
कॉलबैक मैथड को कॉल करता है. साथ ही, यह बताने के लिए कि किस आइटम पर टैप किया गया था, एक MenuItem
ऑब्जेक्ट पास करता है. onOptionsItemSelected()
को लागू करते समय, MenuItem.getItemId()
तरीके को कॉल करके यह पता लगाएं कि किस आइटम पर टैप किया गया था. दिखाया गया आईडी, उस <item>
एलिमेंट के android:id
एट्रिब्यूट में बताई गई वैल्यू से मैच होता है.
उदाहरण के लिए, नीचे दिया गया कोड स्निपेट यह जांच करता है कि उपयोगकर्ता ने कौनसी कार्रवाई चुनी है. अगर यह तरीका उपयोगकर्ता की कार्रवाई की पहचान नहीं करता है, तो यह सुपरक्लास का तरीका शुरू करता है:
Kotlin
override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) { R.id.action_settings -> { // User chooses the "Settings" item. Show the app settings UI. true } R.id.action_favorite -> { // User chooses the "Favorite" action. Mark the current item as a // favorite. true } else -> { // The user's action isn't recognized. // Invoke the superclass to handle it. super.onOptionsItemSelected(item) } }
Java
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_settings: // User chooses the "Settings" item. Show the app settings UI. return true; case R.id.action_favorite: // User chooses the "Favorite" action. Mark the current item as a // favorite. return true; default: // The user's action isn't recognized. // Invoke the superclass to handle it. return super.onOptionsItemSelected(item); } }