当然,我们在这里处理SDK 11及更高版本.
我打算做类似的事情:

旁边的每个项目在PopupMenu,我想将一个图标.
我创建了一个XML文件并将其放入/menu:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_one"
android:title="Sync"
android:icon="@android:drawable/ic_popup_sync"
/>
<item
android:id="@+id/action_two"
android:title="About"
android:icon="@android:drawable/ic_dialog_info"
/>
</menu>
Run Code Online (Sandbox Code Playgroud)
正如您所注意到的,在xml文件中我定义了我想要的图标,但是,当弹出菜单显示时,它显示的是没有图标的图标.我应该怎么做才能出现这两个图标?
是否可以将弹出菜单样式从白色背景上的默认黑色文本更改为深色背景而不将样式应用于整个活动(这会破坏我的UI)?
我怎样才能复制下面在Balsamiq中制作的内容?
我做了这个菜单,但它只显示项目的文本(而不是图标).是否可以在PopupMenu中显示标题和图标?
这是我的 create_post_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_photo"
android:icon="@drawable/ic_action_camera"
android:title="@string/action_photo"
android:showAsAction="always|withText" />
<item
android:id="@+id/action_video"
android:icon="@drawable/ic_action_video"
android:title="@string/action_video"
android:showAsAction="always|withText" />
<item
android:id="@+id/action_text"
android:icon="@drawable/ic_action_edit"
android:title="@string/action_text"
android:showAsAction="always|withText" />
<item
android:id="@+id/action_link"
android:icon="@drawable/ic_action_web_site"
android:title="@string/action_link"
android:showAsAction="always|withText" />
</menu>
Run Code Online (Sandbox Code Playgroud)

编辑
这里是我onCreateOptionsMenu和onOptionsItemSelected方法:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.action_new) {
View menuItemView = findViewById(R.id.action_new);
PopupMenu popupMenu = new PopupMenu(this, menuItemView);
popupMenu.inflate(R.menu.create_post_menu);
popupMenu.show();
return …Run Code Online (Sandbox Code Playgroud) 我的菜单xml代码menu.xml:
<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Single menu item
Set id, icon and Title for each menu item
-->
<item android:id="@+id/back"
android:icon="@drawable/back1"
android:showAsAction="never"
android:title="Back" />
<item android:id="@+id/My_Profile"
android:icon="@drawable/myprofile"
android:showAsAction="never"
android:title="My Profile" />
<item android:id="@+id/Job_Alert"
android:icon="@drawable/jobalert4"
android:showAsAction="never"
android:title="Job Alert !" />
<item android:id="@+id/saved_job"
android:icon="@drawable/jobapplied"
android:title="Saved Jobs"
/>
<item android:id="@+id/Logout"
android:icon="@drawable/logout"
android:title="Logout" />
</menu>
Run Code Online (Sandbox Code Playgroud)
我正在调用这样的菜单xml
PopupMenu popup = new PopupMenu(getBaseContext(), v);
popup.getMenuInflater().inflate(R.menu.menu, popup.getMenu());
popup.show();
Run Code Online (Sandbox Code Playgroud)
但它没有显示图标.
如何在弹出菜单上设置图标?
现在我有几个按钮在点击时会做不同的事情,但现在我希望其中一个在点击时显示一个菜单,但我不知道如何做到这一点。
我的主要按钮的代码是这样的:
public boolean onOptionsItemSelected(MenuItem item){
switch(item.getItemId()) {
case R.id.button1:
//do stuff
break;
case R.id.button2:
//display menu
break;
}
Run Code Online (Sandbox Code Playgroud)
如果按下 button2,我想显示一个选项列表并查看用户选择的菜单项,但我该怎么做?
在菜单 XML 中显示图标
<item
android:id="@+id/item_1"
android:icon="@drawable/settings"
android:showAsAction="always"
android:title="Add item1" />
Run Code Online (Sandbox Code Playgroud)