2012-03-05 5 views
7

मेरे पास यह कोड है, यह सही काम करता है। केवल मैं xml फ़ाइल (actions.xml) के बिना यह गतिशील बनाना चाहता हूं। मैं उसको कैसे करू?एंड्रॉइड में XML फ़ाइल के बिना popupmenu भरें

public void showPopup(View v) { 
    PopupMenu popup = new PopupMenu(this, v); 
    MenuInflater inflater = popup.getMenuInflater(); 
    inflater.inflate(R.menu.actions, popup.getMenu()); 
    popup.show(); 
} 

उत्तर

5

उपयोग popup.getMenu() और उसके बाद सीधे add के विभिन्न भार के का उपयोग कर आइटम जोड़ने।

+1

अच्छा tnx :) क्या आप जानते हैं कैसे की शैली स्थापित करने के लिए अचानक नजर आने वाली सूची?? – Mitch

+1

मुझे नहीं पता कि यह कैसे करना है, नहीं। आप [इन] देख सकते हैं (http://stackoverflow.com/questions/3142067/android-set-style-in-code) [संबंधित] (http://stackoverflow.com/questions/8369504/why-so- जटिल-से-सेट-शैली-से-कोड-इन-एंड्रॉइड) [प्रश्न] (http://stackoverflow.com/questions/2016249/how-to-programmatically-setting-style-attribute-in-a-view) । – kabuko

+1

कोई और करता है? – Mitch

2

एक्सएमएल फ़ाइल में अप्रयुक्त वस्तुओं को हटाएं (बस मेनू थीम को लागू करने के लिए)।

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:theme="@style/AppTheme" /> 

तो getMenu का उपयोग के रूप में नीचे नए मेनू आइटम जोड़ने के लिए: इसलिए, यह की तरह हो जाएगा!

Button btn1= (Button) findViewById(R.id.btn_test); 
PopupMenu popup = new PopupMenu(yourFormName.this, btn1); 
        //Inflating the Popup using xml file 
       popup.getMenu().add("Menu1 Label"); 
       popup.getMenu().add("Menu2 Label"); 
       popup.getMenuInflater().inflate(R.menu.YourXMLFileName, popup.getMenu()); 


        //registering popup with OnMenuItemClickListener 
        popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { 
        public boolean onMenuItemClick(MenuItem item) { 
         //---your menu item action goes here .... 
         Toast.makeText(DisplayTransactions.this,"You Clicked : " + item.getTitle(),Toast.LENGTH_SHORT).show(); 
         return true; 
        } 
        }); 
        popup.show();//showing popup menu 
संबंधित मुद्दे