Android中setIcon什么作用,Android编程常见错误之:MenuItem的setIntent及SubMenu的setIcon方法不起作用...

笔者最近在进行menu编程时,发现MenuItem的setIntent方法不起作用,即点击绑定了intent的MenuItem后没反应,界面并未跳转至另一个activity。在网上查询后有人说是因为重写了onOptionsItemSelected方法,于是笔者就将onOptionsItemSelected的方法屏蔽,然后奇迹出现了。

笔者遇到的另一个问题就是SubMenu的setIcon​方法不起作用,调用SubMenu的setIcon方法后图标并未显示。上网查询后有人说是Android版本问题,低版本的可以直接使用setIcon方法,而高版本对涉及到菜单的源码类MenuBuilder做了修改,默认不显示图标。要想解决这个问题就需要创建MenuBuilder对象并调用其方法,但是MenuBuilder是系统内部的框架类,在应用程序中无法直接创建MenuBuilder对象。因此需要利用反射机制来调用MenuBuilder类的setOptionalIconsVisible方法。

反射需要用的类名为:com.android.internal.view.menu.MenuBuilder;

方法名为:setOptionalIconsVisible,该方法的参数为boolean类型。

笔者遇到的第三个问题是setHeaderTitle​和setHeaderIcon不起作用,调用SubMenu的这两个方法,即看不到菜单头的标题,也看不到菜单头的图标,问题直到现在也没能解决,贴出代码希望有大神不吝赐教。

以下是onCreateOptionsMenu​方法中的代码:

//向menu中添加字体颜色的子菜单

SubMenu colorMenu =

menu.addSubMenu("字体颜色");

colorMenu.setIcon(R.drawable.xxx);

colorMenu.setHeaderTitle("请选择文字颜色");

colorMenu.setHeaderIcon(R.drawable.yyy);

colorMenu.add(0, COLOR_1, 0,

"红色");

colorMenu.add(0, COLOR_2, 0, "蓝色");

colorMenu.add(0, COLOR_3, 0, "黄色");

运行程序后“字体颜色”和图标xxx可以显示,但是点击字体颜色菜单项后弹出的只有红色、蓝色和黄色菜单项,“请选择文字颜色”和图标yyy并未显示。问题一直未解决,期待高手指点。​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值