5

मुझे पता है कि एक्शनबार के ओवरफ़्लो मेनू में आइकन कैसे दिखाना है। मैं इसका उपयोग करता हूं,प्रासंगिक क्रिया बार में ओवरफ़्लो मेनू में आइकन दिखाएं

@Override 
    public boolean onMenuOpened(int featureId, Menu menu) { 
     if (featureId == Window.FEATURE_ACTION_BAR && menu != null) { 

      if (menu.getClass().getSimpleName().equals("MenuBuilder")) { 
       try { 
        Method m = menu.getClass().getDeclaredMethod(
          "setOptionalIconsVisible", Boolean.TYPE); 
        m.setAccessible(true); 
        m.invoke(menu, true); 
       } catch (NoSuchMethodException e) { 
        Log.e("TAG", "onMenuOpened", e); 
       } catch (Exception e) { 
        throw new RuntimeException(e); 
       } 
      } 
     } 
     return super.onMenuOpened(featureId, menu); 
    } 

लेकिन जब मैं अपनी सूची दृश्य के किसी भी आइटम पर लंबे समय तक दबाता हूं तो सीएबी शुरू होता है। अब, जब मैं सीएबी के ओवरफ्लो मेनू को खोलता हूं, तो मेनू में कोई आइकन नहीं होता है। मैं उसे कैसे कर सकता हूँ?

अग्रिम धन्यवाद।

+0

क्या कोई भी मेरी मदद कर सकता है? –

+0

यह समाधान प्रतिबिंब का उपयोग करता है और मुझे नहीं लगता कि यह प्रोगार्ड obfuscation के माध्यम से जीवित रहेगा। – f470071

उत्तर

5

मैं 2 दिनों तक इंतजार कर रहा था लेकिन इस पर कोई जवाब नहीं मिला। तो इसे खुद हल किया।

विचार यहां काफी सरल है। आइकन और टेक्स्ट दोनों को दिखाने के लिए आपको अपना स्वयं का अतिप्रवाह आइटम बनाना होगा और एक नेस्टेड मेनू बनाना होगा।

देखें नीचे दिए गए उदाहरण कोड,

<item 
     android:id="@+id/overflow" 
     android:icon="@drawable/ic_overflow_white" 
     android:orderInCategory="201" 
     android:title="@string/overflow" 
     app:showAsAction="always"> 

     <menu> 
      <item 
       android:id="@+id/cab_menu_select_all" 
       android:icon="@drawable/ic_select_all_grey" 
       android:orderInCategory="100" 
       android:title="@string/cab_menu_select_all" 
       app:showAsAction="always|withText"></item> 
     </menu> 
    </item> 

चाल यहाँ नेस्टेड मेनू तैयार करना है। आप जितनी चाहें उतनी वस्तुओं को जोड़ सकते हैं।

+0

हां। लेकिन क्या होगा यदि शीर्ष स्तर के मेनू में पर्याप्त आइटम हैं जो अतिप्रवाह मेनू सिस्टम द्वारा स्वयं दिखाया गया है। क्या हमारे पास दो ओवरफ्लो हैं: एक "फर्जी" और सिस्टम द्वारा एक? – f470071

+0

हां, यह उन मामलों में होता है। –

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