今天仿真微信做个点击加号,显示的一些状态。界面如下:
其实没啥难的,刚开始就是死活显示不了图标,只能显示文字。最后在网上百度下,Android4.3之后就没有现成的API可以显示了,好在有其它的说法可以用,最后利用反射的原理。加了这个代码,果然图标显示出来。
反射代码:
field = popupMenu.getClass().getDeclaredField("mPopup");field.setAccessible(true);MenuPopupHelper mHelper = (MenuPopupHelper) field.get(popupMenu);mHelper.setForceShowIcon(true); 整体的代码:
PopupMenu popupMenu = new PopupMenu(MainActivity.this,view);popupMenu.getMenuInflater().inflate(R.menu.menu,popupMenu.getMenu());
popupMenu.show();在Menu显示的几个文字分别添加点击事件,可以这样写:
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()){ case R.id.group: Toast.makeText(MainActivity.this, "点击群聊", Toast.LENGTH_SHORT).show(); break; case R.id.sao: Toast.makeText(MainActivity.this, "点击扫一扫", Toast.LENGTH_SHORT).show(); break; case R.id.addfriend: Toast.makeText(MainActivity.this, "点击添加朋友", Toast.LENGTH_SHORT).show(); break; case R.id.manney: Toast.makeText(MainActivity.this, "点击收付款", Toast.LENGTH_SHORT).show(); break; } return false;就可以写自己想要表达的业务逻辑了。menu的菜单就不罗列出来了。
时间: 2024-12-05 12:17:35