我想在工具栏中显示溢出菜单(AppCompat-v7:22.1.1),下面是我的menu_main.xml.
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item
android:id="@+id/action_search"
android:title="@string/action_search"
android:icon="@mipmap/ic_menu_search"
android:orderInCategory="100"
android:actionViewClass="android.widget.SearchView"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/menu_group_chat"
android:title="@string/menu_group_chat"
android:icon="@mipmap/ic_menu_groupchat" />
<item
android:id="@+id/menu_add_friend"
android:title="@string/menu_add_friend"
android:icon="@mipmap/ic_menu_add_friend" />
Run Code Online (Sandbox Code Playgroud)
运行我的应用程序后,菜单项的图标没有显示,然后我尝试了这个解决方案,在我的Activty中添加了一个覆盖方法onMenuOpened()(从AppCompatActivity扩展),
@Override
public boolean onMenuOpened(int featureId, Menu menu) {
if(menu!=null){
if(menu.getClass().getSimpleName().equals("MenuBuilder")){
try {
Method m = menu.getClass().getDeclaredMethod(
"setOptionalIconsVisible", Boolean.TYPE);
m.setAccessible(true);
m.invoke(menu, true);
} catch (Exception e) {
e.printStackTrace();
}
}
}
return super.onMenuOpened(featureId, menu);
}
Run Code Online (Sandbox Code Playgroud)
但在运行此演示后,我发现图标仍未显示.
从这个报道的问题,我知道在22.x中不再调用AppCompatActivity.onMenuOpened,但奇怪的是当我点击Genymotion中的硬件菜单键时,菜单出现在底部并带有图标,
关闭菜单后,我再次单击工具栏中的溢出按钮,菜单中出现这些图标,
多奇怪啊!为什么会这样?
为了改善Instagram中的TextView渲染,Instagram中的工程师在这里提供了一个hack ,他们使用自定义视图(TextLayoutView)来缓存text.Layout,但在这篇文章中,他们没有给我们演示或告诉我们如何使用它,所以如果我想使用这个hack,我该怎么办?