public boolean onCreateOptionsMenu(Menu menu) {
try {
Class> menuClass = Class.forName("com.android.internal.view.menu.MenuBuilder");
Method menuMethod = menuClass.getDeclaredMethod("setOptionalIconsVisible", boolean.class);
menuMethod.setAccessible(true);
menuMethod.invoke(menu, true);
}catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
MenuItem show_item = menu.add(0, Menu.FIRST, 0, "显示").setIcon(R.drawable.delete);
// MenuItem share_item = menu.add(0, Menu.FIRST+1, 0, "分享");
SubMenu shareMenu = menu.addSubMenu(0, Menu.FIRST+1, 0, "分享").setIcon(R.drawable.delete);
shareMenu.setHeaderIcon(R.drawable.ic_launcher);
shareMenu.setHeaderTitle("分享到...");
shareMenu.add(0, 100, 0, "微信");
shareMenu.add(0, 101, 0, "QQ");
shareMenu.add(0, 102, 0, "新浪微博");
MenuItem detail_item = menu.add(0, Menu.FIRST+2, 0, "详细");
MenuItem delete_item = menu.add(0, Menu.FIRST+3, 0, "删除");
MenuItem help_item = menu.add(0, Menu.FIRST+4, 0, "帮助");
MenuItem save_item = menu.add(0, Menu.FIRST+5, 0, "保存").setIcon(R.drawable.circle);
MenuItem other_item = menu.add(0, Menu.FIRST+6, 0, "其他");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {//响应选项菜单的点击事件
switch (item.getItemId()) {
case Menu.FIRST:
Toast.makeText(MainActivity.this,"你点击的是显示",Toast.LENGTH_SHORT).show();
break;
case 100:
Toast.makeText(MainActivity.this,"你要分享到微信去",Toast.LENGTH_SHORT).show();
break;
}
return true;
}
首先要在xml中添加一个imageView,这个毫无疑问
重写onCreateContextMenu()
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView=(ImageView) findViewById(R.id.imageView1);
registerForContextMenu(imageView);//注册这个是必须的 如果不注册的话点击会没反应
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
switch (v.getId()) {
case R.id.imageView1:
menu.add(0,200,0,"QQ空间");
menu.add(0,201,0,"微信");
menu.add(0,202,0,"朋友圈");
menu.add(0,203,0,"新浪微博");
menu.setHeaderIcon(R.drawable.ic_launcher);
menu.setHeaderTitle("分享到...");
break;
default:
break;
}
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 200:
Toast.makeText(this,"你要分享到QQ空间去",Toast.LENGTH_SHORT).show();
break;
}
return true;
}
:定义菜单项
id、title、icon
checkable、checked、visible、enable
:将多个- 包装成一个菜单组
checkableBehavior:none(不可选)、all(多选)、single(单选)
visible:指定该组是否可见
enable:指定该组是否可用
<item../>元素用于定义一份菜单项,<item../>元素又可包含<menu../>元素,位于<item../>元素内部的<menu../>就代表子菜单
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/mi_close"
android:icon="@drawable/ic_launcher"
android:title="Close"/>
<item
android:id="@+id/mi_no_icon"
android:title="Sans Icon"/>
<item
android:id="@+id/mi_disabled"
android:title="Disabled"/>
<item
android:id="@+id/mi_submenu"
android:title="A Submenu" />
menu>
public boolean onCreateOptionsMenu(Menu menu) {
try {
Class> menuClass = Class.forName("com.android.internal.view.menu.MenuBuilder");
Method menuMethod = menuClass.getDeclaredMethod("setOptionalIconsVisible", boolean.class);
menuMethod.setAccessible(true);
menuMethod.invoke(menu, true);
}catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
MenuInflater menuInflater=getMenuInflater();
menuInflater.inflate(R.menu.mymenu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {//响应选项菜单的点击事件
switch (item.getItemId()) {
case R.id.mi_close:
Toast.makeText(MainActivity.this, "你点击的是关闭", Toast.LENGTH_SHORT).show();
break;
case R.id.mi_disabled:
Toast.makeText(MainActivity.this, "你点击的是Disabled", Toast.LENGTH_SHORT).show();
break;
}
return true;
}
public class MenuBuilder implements Menu {
...//mOptionalIconsVisible 为true时,才能显示图标
private boolean mOptionalIconsVisible = false;
....
void setOptionalIconsVisible(boolean visible) {
mOptionalIconsVisible = visible;
}
boolean getOptionalIconsVisible() {
return mOptionalIconsVisible;
}
...
}
//setOptionalIconsVisible方法设置mOptionalIconsVisible为true,然后在给菜单添加Icon即可生效
Class> clazz =Class.forName("com.android.internal.view.menu.MenuBuilder");
Method m =clazz.getDeclaredMethod("setOptionalIconsVisible",boolean.class);
m.setAccessible(true);
m.invoke(menu, true);
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/mi_qq"
android:icon="@drawable/ic_launcher"
android:title="QQ空间"/>
<item
android:id="@+id/mi_friend"
android:title="朋友圈"/>
<item
android:id="@+id/mi_tx"
android:enabled="true"
android:title="腾讯微博"/>
<item
android:id="@+id/mi_xl"
android:title="新浪微博"/>
menu>
button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
PopupMenu popupMenu = new PopupMenu(MenuActivity.this, button);
popupMenu.getMenuInflater().inflate(R.menu.pop_menu, popupMenu.getMenu());
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case R.id.mi_qq:
Toast.makeText(MenuActivity.this, "你打算分享到QQ空间哇", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
return true;
}
});
popupMenu.show();
}
});
END!!!!!!!!!