try {
Field field = popupMenu.getClass().getDeclaredField("mPopup");
field.setAccessible(true);
MenuPopupHelper mHelper = (MenuPopupHelper) field.get(popupMenu);
mHelper.setForceShowIcon(true);
} catch (IllegalAccessException | NoSuchFieldException e) {
e.printStackTrace();
}
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<group android:checkableBehavior="single">
<item
android:id="@+id/menu_setting_wifi"
android:title="使用WIFI"
android:orderInCategory="80"
android:icon="@drawable/menu_setting_wifi"
app:showAsAction="ifRoom" />
<item
android:id="@+id/menu_setting_gps"
android:title="使用GPS"
android:orderInCategory="90"
android:icon="@drawable/menu_setting_gps"
app:showAsAction="ifRoom" />
</group>
<group>
<item
android:id="@+id/menu_setting_userIcon"
android:title="设置头像"
android:icon="@drawable/menu_setting_usericon"
android:orderInCategory="91"
app:showAsAction="never" />
</group>
</menu>
<!--自定义PopupMenu上的RadioButton的样式-->
<style name="PopupMenuStyle" parent="AppTheme">
<item name="android:radioButtonStyle">@style/MenuRadioButtonStyle</item>
</style>
<style name="MenuRadioButtonStyle" parent="@android:style/Widget.CompoundButton.RadioButton">
<item name="android:button">@drawable/selector_menu_rb</item>
</style>
<activity android:name=".PopupMenuActivity" android:theme="@style/PopupMenuStyle" />
Context wrapper = new ContextThemeWrapper(activity, R.style.PopupMenuStyle); PopupMenu popupMenu = new PopupMenu(activity, ancher);
/**
* 自定义PopupMenu
* Created by hanj on 15-3-17.
*/
public class PopupMenuActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout lin = new LinearLayout(this);
Button btn = new Button(this);
LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
btn.setLayoutParams(p);
lin.addView(btn);
btn.setText("显示PopupMenu");
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showPopupMenu(PopupMenuActivity.this, v);
}
});
setContentView(lin);
}
//当前选择的menuItem的id
private int checkedItemId = R.id.menu_setting_wifi;
private void showPopupMenu(final Context context, View ancher) {
PopupMenu popupMenu = new PopupMenu(context, ancher);
//引入菜单资源
popupMenu.inflate(R.menu.menu_popup);
//设置选中
popupMenu.getMenu().findItem(checkedItemId).setChecked(true);
//菜单项的监听
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.menu_setting_wifi:
checkedItemId = R.id.menu_setting_wifi;
Toast.makeText(context, "WIFI", Toast.LENGTH_SHORT).show();
break;
case R.id.menu_setting_gps:
checkedItemId = R.id.menu_setting_gps;
Toast.makeText(context, "GPS", Toast.LENGTH_SHORT).show();
break;
case R.id.menu_setting_userIcon:
Toast.makeText(context, "USER_ICON", Toast.LENGTH_SHORT).show();
break;
}
return true;
}
});
//使用反射,强制显示菜单图标
try {
Field field = popupMenu.getClass().getDeclaredField("mPopup");
field.setAccessible(true);
MenuPopupHelper mHelper = (MenuPopupHelper) field.get(popupMenu);
mHelper.setForceShowIcon(true);
} catch (IllegalAccessException | NoSuchFieldException e) {
e.printStackTrace();
}
//显示PopupMenu
popupMenu.show();
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有