你可以使用一個PopupMenu
在你onOptionsItemSelected()
當點擊其中一個菜單按鈕時,它將顯示不同的菜單。根據您的需要修改這段代碼:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.button1:
// DO SOMETHING HERE
break;
case R.id.button2:
// THE R.id.button2 has to be the same as the item that will trigger the popup menu.
View v = findViewById(R.id.button2);
PopupMenu pm = new PopupMenu(LoginActivity.this, v);
pm.getMenuInflater().inflate(R.menu.pm_accounts_item, pm.getMenu());
pm.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
Toast.makeText(getApplicationContext(), String.valueOf(item.getTitle()), Toast.LENGTH_SHORT).show();
switch (item.getItemId()) {
case R.id.menuEdit:
break;
case R.id.menuDetails:
break;
case R.id.menuDelete:
break;
default:
break;
}
return true;
}
}); pm.show();
break;
default:
break;
}
return false;
}
你會發現一個新的菜單XML已經在這條線被誇大:
pm.getMenuInflater().inflate(R.menu.pm_accounts_item, pm.getMenu());
你必須創建一個第二個菜單XML單擊其中一個按鈕時需要顯示的選項列表。這與您當前的菜單XML類似,不同之處在於一組不同的選項。
重要! 不要忘記在PopupMenu pm....
之前包含此View v = findViewById(R.id.button2);
。 PopupMenu需要一個View
來錨定自己。但是onOptionsItemSelected()
方法根本沒有提供。因此額外的陳述。
以上示例說明了Activity
中的示例。要在Fragment
使用,改變View v = findViewById(R.id.button2);
到View v = getActivity().findViewById(R.id.button2);
這是最後的結果是:
什麼類型的菜單,你在說什麼?它是選項菜單嗎? –