我找到了一种方法。如果有人需要,我会将其作为答案。首先,将未勾选的复选框设置为该菜单项的图标。
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" >
android:id="@+id/action_checkable"
android:title="Check"
app:showAsAction="always"
android:icon="@drawable/ic_unchecked_checkbox" />
然后有力地表明使用该菜单图标和标题:
try {
Class> classPopupMenu = Class.forName(popupMenu.getClass().getName());
Field mPopup = classPopupMenu.getDeclaredField("mPopup");
mPopup.setAccessible(true);
Object menuPopupHelper = mPopup.get(popupMenu);
Class> classPopupHelper = Class.forName(menuPopupHelper
.getClass().getName());
Method setForceIcons = classPopupHelper.getMethod("setForceShowIcon", boolean.class);
setForceIcons.invoke(menuPopupHelper, true);
} catch (Exception e) {
e.printStackTrace();
}
然后改变菜单的图标和颜色,而点击该图标。使用布尔值isSelected跟踪检查状态。更改图标和它的使用这种颜色:
if(isSelected) {
MenuItem checkable = (MenuItem) popupMenu.getMenu().findItem(R.id.action_checkable);
Drawable checkableDrawable = getResources().getDrawable(R.drawable.ic_checked_checkbox);
checkableDrawable.setColorFilter(getResources().getColor(R.color.primaryColor), PorterDuff.Mode.SRC_ATOP);
checkable.setIcon(checkableDrawable);
}