2012-03-05 19 views
7

Tôi có mã này, công trình này hoàn hảo. Chỉ có tôi muốn thực hiện điều này mà không cần tệp xml (actions.xml). Làm thế nào để làm điều đó?Điền popupmenu không có tệp XML trong android

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

Trả lời

5

Sử dụng popup.getMenu() và sau đó thêm các mục trực tiếp bằng các tình trạng quá tải khác nhau của add.

+1

đẹp tnx :) Bạn có biết làm thế nào để thiết lập các phong cách Thực đơn?? – Mitch

+1

Tôi không biết cách làm điều đó một cách cụ thể, không. Bạn có thể xem [this] (http://stackoverflow.com/questions/3142067/android-set-style-in-code) [related] (http://stackoverflow.com/questions/8369504/why-so- phức tạp-to-set-style-từ-code-in-android) [câu hỏi] (http://stackoverflow.com/questions/2016249/how-to-programmatically-setting-style-attribute-in-a-view) . – kabuko

+1

Có ai khác không? – Mitch

2

trong tệp xml xóa các mục không sử dụng (chỉ để triển khai chủ đề menu). Vì vậy, nó sẽ được như:

<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" /> 

sau đó sử dụng getMenu để thêm các mục trình đơn mới như sau:

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