解决Toolbar中的Menu不显示图片的问题


1.在Toolbar所在的Activity中使用
setSupportActionBar(mToolbar)方法设置ActionBar为当前的Toolbar
/**
* 使用该方法的注意事项(多次遇到的坑):
* 1.设置toolbar的显示UI一定要在setSupportActionBar之前设置,否则不会显示。
* 例如:mToolbar.setTitle("这是toolbar主标题");
* 2.toolbar的监听一定要写在setSupportActionBar的下面,否则不会触发事件。
* 3.mToolbar.inflateMenu(R.menu.toolbar)使用该方法不会显示菜单选项,需要在activity中重写
* onCreateOptionsMenu方法,在该方法中使用getMenuInflater().inflate(R.menu.toolbar, menu)
* 加载menu,才会显示。
*/
setSupportActionBar(mToolbar);

2.在本类中重
onCreateOptionsMenu(Menu menu)方法加载menu代码如下:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toolbar, menu);
return super.onCreateOptionsMenu(menu);
}

3.在本类中重写
onPrepareOptionsPanel(View view, Menu menu)在该方法中使用反射显示图片,代码如下:
@Override
protected boolean onPrepareOptionsPanel(View view, Menu menu) {
if (menu != null) {
if (menu.getClass() == MenuBuilder.class) {
try {
Method m = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);
m.setAccessible(true);
m.invoke(menu, true);
} catch (Exception e) {
}
}
}
return super.onPrepareOptionsPanel(view, menu);
}
 
 

原文地址:https://www.cnblogs.com/lyh1299259684/p/6795223.html