android e图标一会有一会没有反应,android解决菜单Menu添加Icon无效问题,让菜单同时显示图标和文字...
今天主要解決在Android 4.0?以上的系統中,在java代碼中給菜單Menu動態添加Icon無效問題。本人通過嘗試網上給出的涉及到菜單的源碼類?MenuBuilder通過反射更改mOptionalIconsVisible成員初始值默認值false為true的方法,結果并不奏效,圖標還是沒有顯示出來。最后我找到了有效的方法,雖然依舊使用的是反射,但是我們只需要重寫一個onMenuOpened()方法即可。1.只需要重新這一方法/* 利用反射機制調用MenuBuilder的setOptionalIconsVisible方法設置mOptionalIconsVisible為true,給菜單設置圖標時才可見
* 讓菜單同時顯示圖標和文字
*/
@Override
public boolean onMenuOpened(int featureId, Menu menu) {
if (menu != null) {
if (menu.getClass().getSimpleName().equalsIgnoreCase("MenuBuilder")) {
try {
Method method = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);
method.setAccessible(true);
method.invoke(menu, true);
} catch (Exception e) {
e.printStackTrace();
}
}
}
return super.onMenuOpened(featureId, menu);
}
2.我在Activity里面創建menu的代碼,并且給menu設置點擊事件@Override
public boolean onCreateOptionsMenu(Menu menu) {
//使用menu文件
//getMenuInflater().inflate(R.menu.menu_main, menu);
//動態創建menu文件
// Inflate the menu; this adds items to the action bar if it is present.
menu.add(Menu.NONE, Menu.FIRST + 1, 0, "菜單1").setIcon(R.drawable.icon_homepage);
menu.add(Menu.NONE, Menu.FIRST + 2, 0, "菜單2").setIcon(R.drawable.icon_homepage);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch (item.getItemId()) //得到被點擊的item的itemId
{
case Menu.FIRST + 1: //對應的ID就是在add方法中所設定的Id
AppToast.makeShortToast(MainActivity.this, "Menu.FIRST+1");
break;
case Menu.FIRST + 2:
AppToast.makeShortToast(MainActivity.this, "Menu.FIRST+2");
break;
}
return true;
}3.一切搞定,上一張截圖。
總結
以上是生活随笔為你收集整理的android e图标一会有一会没有反应,android解决菜单Menu添加Icon无效问题,让菜单同时显示图标和文字...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ZZULIOJ 1057:素数判定
- 下一篇: ZZULIOJ 1062:最大公约数