2012-03-05 10 views
7

私はこのコードを持っています、これは完璧に動作します。私はXMLファイル(actions.xml)なしでこの動的にしたいだけです。それ、どうやったら出来るの?アンドロイドのXMLファイルを使わないでポップアップメニューを埋めてください

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

をxmlファイルに残して、メニューテーマを実装するだけです。その後、以下のように新しいメニュー項目を追加するためにgetMenuを使用

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

:だから、それは次のようになります!

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 
関連する問題