android 可勾选菜单,如何将复选框图标放置在Android的可检查菜单项中的文本左侧?...

我找到了一种方法。如果有人需要,我会将其作为答案。首先,将未勾选的复选框设置为该菜单项的图标。

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);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值