最忌比较烦,比较烦,比你烦。
骂了隔壁的,整个带图menu,为鸡毛的显示出来不带图。。为鸡毛啊???
因为主题这个大SB~~~~~~
发送menu按键(注意是发送,不时点击),弹出menu,这个menu在整个decorview的最底下,居中显示。
这个吊过程时咋整的?为毛显示在最底下?为毛menu的xml里有图片不给我显示?我欠你钱了是吗?
一、先看看咋写的demo,是不是自己有病,说医生疯了?
menu的xml,有title有图片
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_settings"
android:title="Search Settings"
android:icon="@mipmap/ic_launcher"
android:alphabeticShortcut='P'
/>
</menu>
代码:解析一哈
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
menu.clear();
MenuInflater inflater = new MenuInflater(getApplicationContext());
inflater.inflate(R.menu.settings, menu);
return true;
}
完了,尼玛嗨啊,显示出来。。。我的图片呢。。。
烦,真特么烦。。。为鸡毛人家的就有。
二、去死吧WMS(PhoneWindow)
显不显示,都肯定有代码能控制吧。。。先用hierachy撸一眼,看看。
发现,用的是ExpandedMenuView,尼玛嗨~~~。这个时无图的。
可是,为鸡毛啊,怀疑人生啊,我特么就写个menu,你凭什么决定给我用什么menu啊~~~
强撸灰飞烟灭,那就撸吧~
Menu,算个window(如果不知道,辣么,你此时就该记住了),辣么,就是该死的WMS搞的鸡毛。
皮皮虾,我们走,干WMS去。首先,你要去百度一下PanelFeatureState,这个逼就是祸害,弄死他,你就翻盘了。
索性,小弟我百度的给你看吧,写的嗨挺吊的:http://blog.csdn.net/siobhan/article/details/8450173
辣么好,知道怎么起的menu了,辣么哪里决定的起什么样的menu呢? IconMenuView OR ExpandedMenuView
protected boolean initializePanelContent(PanelFeatureState st) {
....
MenuView menuView = st.isInListMode()
? st.getListMenuView(getContext(), mPanelMenuPresenterCallback)
: st.getIconMenuView(getContext(), mPanelMenuPresenterCallback);
本文只关注,两种样式,WMS如何抉择的,并不关注其他。所以取其精华,去TMD没用的代码。
看到,是一个判断决定的:小弟不才,靠打log为生~~~
public boolean isInListMode() {
Log.d(TAG,"isInListMode isInExpandedMode: "+isInExpandedMode+", isCompact: "+isCompact);
return isInExpandedMode || isCompact;
}
这里的
isCompact为true了,导致的使用ListMenuView。
辣么就好搞了啊,在搜一下,哪里赋值就哦了。
void setStyle(Context context) {
TypedArray a = context.obtainStyledAttributes(R.styleable.Theme);
...
isCompact = a.getBoolean(
R.styleable.Theme_panelMenuIsCompact, false);
...
a.recycle();
}
搁主题里弄得。。。
辣么,看下啥子主题才是false吧。。除了theme,holo和meterial都是true。
看到这里,心里一惊,搂一眼AS的默认主题,Theme.AppCompat.Light.DarkActionBar
改吧,改成@android:style/Theme.Light
懒得去看默认的时哪个了,反正不是HOLO就是material。
到此为止,各位看官,使用的时候注意一下。