我的问题:需要对原有项目中已有的PopupMenu菜单进行改进:
一、
1、增加菜单中title标题前的图标icon
2、修改PopupMenu的背景颜色
3、修改PopupMenu中title标题文字的大小和颜色
首先爬过的坑告诉大家
1、在popup_menu.xml中修改文字的大小 输入 android:textsize,发现并没有此项属性,(android:color,android:src,android:background 等属性都没有引用,就不在一一列举了)强行复制粘贴
2、在popup_menu.xml中增加图标,输入 icon属性并且引用图标,图标位置为drawable文件夹下的资源,你们可以试下mimp文件夹下的图标是否能使用,我就不试啦
popup_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:textsize="30sp"
android:icon="@drawable/menu_add_friends"
android:id="@+id/add_contacts"
android:title="@string/add_person_lx" />
</menu>
3、最后添加完文字的大小、颜色、与图标时高兴的去运行项目,发现我们增加的多种效果并没有实现,这是怎么回事呢,通过查询PopupMenu的使用 如下解决方法
二、
1、首先贴出正确的 popup_menu.xml 如下
还是要在布局文件中增加图标 icon并引用
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:icon="@drawable/menu_add_friends"
android:id="@+id/add_contacts"
android:title="@string/add_person_lx" />
<item
android:icon="@drawable/menu_group_chat"
android:id="@+id/create_group"
android:title="@string/create_group" />
<item
android:icon="@drawable/menu_qrcode"
android:id="@+id/scan"
android:title="@string/sao_sao" />
<item
android:id="@+id/search_group"
android:visible="false"
android:title="@string/search_group" />
</menu>
2、在你需要修改对应的代码中添加如下代码
popupMenu = new PopupMenu(this, plus_add);
menu = popupMenu.getMenu();
// 通过XML文件添加菜单项
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.popup_menu, menu);
/*
* 反射显示布局中的图标 我也不懂..抄的
* */
try {
Field field = popupMenu.getClass().getDeclaredField("mPopup");
field.setAccessible(true);
MenuPopupHelper helper = (MenuPopupHelper) field.get(popupMenu);
helper.setForceShowIcon(true);
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
3、设置图标后开始设置popup_menu.xml的背景颜色与其中的文字大小和颜色
4、是通过设置style文件自定义样式去引用的 ,如下
<style name="AppTheme" parent="BaseTheme">
<!--<item name="android:windowIsTranslucent">true</item>-->
<item name="android:windowIsTranslucent">false</item>
<!--引用自定义popupwindow样式-->
<item name="popupMenuStyle">@style/MyPopupMenu</item>
<item name="textAppearanceSmallPopupMenu">@style/MyTextAppearance</item>
<item name="textAppearanceLargePopupMenu">@style/MyTextAppearance</item>
</style>
<!--popupwidow的背景颜色-->
<style name="MyPopupMenu" >
<item name="android:popupBackground">@color/white</item>
</style>
<!--popupwindow的文字样式-->
<style name="MyTextAppearance">
<item name="android:textColor">@color/gray_wallet</item>
<item name="android:textSize">@dimen/txt_normal_content</item>
</style>
<!--popMenu分割线的颜色--> <!--暂未使用 -->
<style name="popmenuDivier">
<item name="android:divider">@color/colorAccent</item>
<item name="android:dividerHeight">2sp</item>
</style>
5、如果是在某个Activity中使用还可将此样式单独引用
<activity
android:name="你的activity"
android:theme="@style/你自己自定义的样式"/>
总结:也就这么多的内容吧,若是有错误或不足,请大家给我留言,我在修改,谢谢阅读。
若还是不太明白,可阅读此两篇文章
https://www.jianshu.com/p/9abbf0fe4846
https://blog.youkuaiyun.com/loucyin/article/details/50813439