Android PopupMenu 简单使用

我的问题:需要对原有项目中已有的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.csdn.net/loucyin/article/details/50813439

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值