Android更改popupmenu背景并显示图标
似乎popupmenu是无法单独设置style的,好像是由context决定的,前几天需要设置style,找了很久才找一一个办法,似乎是通过 ContextThemeWrapper 包装一个 Context 然后把 Context 作为参数传递给popupmenu的构造函数
java代码如下
/**************************************************************************/
Context wrapper = new ContextThemeWrapper(this, R.style.MyPopupStyle);
/**************************************************************************/ PopupMenu popupMenu = new PopupMenu(wrapper, view);
popupMenu.getMenuInflater().inflate(R.menu.user_main_toolbar_add_items, popupMenu.getMenu());
popupMenu.show();
style文件如下
<style name="MyPopupStyle" parent="Widget.AppCompat.PopupMenu">
<item name="android:itemBackground">@drawable/toolbar_item_selector</item>
<item name="android:textColor">@color/whitesmoke</item>
</style>
记得当时使用background属性是无效的,改成了itembackground才有了效果
而且为了使popupmenu可以显示icon,找了一种方法,并没有去查原因,仅仅是用了,代码如下
/**************************************************************************/
Context wrapper = new ContextThemeWrapper(this, R.style.MyPopupStyle);
/**************************************************************************/ PopupMenu menu = new PopupMenu(wrapper, view);
menu.inflate(R.menu.user_main_toolbar_add_items); MenuPopupHelper menuHelper = new MenuPopupHelper(wrapper, (MenuBuilder) menu.getMenu(), view);
menuHelper.setForceShowIcon(true);
menuHelper.show();
而且官方文档好像没搜到这个类,谷歌第一条是源代码,里面有各个方法的说明,包括setForceShowIcon,
本文本来只用来自己参考的,不过可能会有人看到,还是贴出链接,可以看下
Android更改popupmenu背景并显示图标的更多相关文章
- android:更改PagerTabStrip背景颜色,标题字体样式、颜色和图标,以及指示条的颜色
1.更改PagerTabStrip背景颜色 我们直接在布局中设置background属性可以: <android.support.v4.view.ViewPager android:id=&qu ...
- Android - 安装应用(APP) 不显示图标
装应用(APP) 不显示图标 本文地址:www.2cto.com 在启动的activity的AndroidManifest注册中,添加隐式启动的data: 删除应用图标的若干解决方案: 1.Andro ...
- 我的Android进阶之旅------>关于使用Android Studio替换App的launcher图标之后仍然显示默认的ic_launcher图标的解决方法
前言 最近做了一个App,之前开发该App的时候一直以来都是默认的launcher图标启动的, 今天美工换了一个App的launcher 图标,因此在Android Studio中将默认的lanche ...
- Android ViewPager滑动背景渐变
原理 总 布局为RelativeLayout或者FrameLayout,在这里我们用的是RelativeLayout.先设置背景图片,宽度和高度都 fill_parent,在设置viewpager,v ...
- Android设置布局背景为白色的三种方法
一.在xml文件里可以直接设置: android:background="#ffffff" 其他颜色可以看这里;http://blog.csdn.net/yanzi1225627/ ...
- 从零开始学android开发- 应用程序窗体显示状态操作requestWindowFeature
我们在开发程序是经常会需要软件全屏显示.自定义标题(使用按钮等控件)和其他的需求,今天这一讲就是如何控制Android应用程序的窗体显示. 首先介绍一个重要方法那就是requestWindowFeat ...
- android Button 切换背景,实现动态按钮和按钮颜色渐变
android Button 切换背景,实现动态按钮和按钮颜色渐变 一.添加android 背景筛选器selector实现按钮背景改变 1.右键单击项目->new->Oth ...
- ActionBar只显示图标不显示文字
问题:ActionBar菜单项android:showAsAction设置为android:showAsAction="always|withText"或者android:show ...
- UITabBar背景、icon图标颜色、被选中背景设置以及隐藏UITabBar的两种方式
一.对UITabBar背景和icon图标的一些设置 (1)因为直接给UITabBar设置的背景颜色显示的不纯,半透明的感觉,所以,有时候我们可以直接利用纯色的图片作为背景达到想要的效果: (2)给ic ...
随机推荐
- JS中字符串切片
1.charAt 作用:根据索引值获取字符串 s1= "Hello world"; // 根据索引求字符 var myChar = s1.charAt(4); console.lo ...
- Java入门 - 面向对象 - 05.封装
原文地址:http://www.work100.net/training/java-encapsulation.html 更多教程:光束云 - 免费课程 封装 序号 文内章节 视频 1 概述 2 封装 ...
- spring boot配置spring-data-jpa的时候报错CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is java.lang.NoSuchMethodError
org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager f ...
- 网鼎杯题目“phone”--十六进制mysql注入
注册后,即可点击查看谁的电话和我类似. 注册时有三个必填项,分别是用户名.密码和电话.电话要求必须数字. 注册个1111的电话后,点击查看,返回有1个人电话和我类似,在注册一个为1111的,返回有2人 ...
- Linux系统搭建私有CA证书服务器
一.CA简介 CA是什么?CA是Certificate Authority的简写,从字面意思翻译过来是凭证管理中心,认证授权.它有点类似我们生活中的身份证颁发机构,这里的CA就相当于生活中颁发身份证的 ...
- Java and MongoDB link for project
鉴于开源项目的发展,大力拥抱开源社区.发现Java和MongoDB不失为一个较好的选择. 与其他数据库一样,同样需要mongo-java-driver,构建了Java与MongoDB的交互. 1. 连 ...
- 超越队西柚考勤系统--Beta冲刺2
超越队西柚考勤系统- -beta冲刺2 格式描述 这个作业属于哪个课程 课程链接 这个作业要求在哪里 作业链接 团队名称 超越队(西柚考勤系统) 这个作业的目标 对alpha版本的程序进行改进,代码核 ...
- applyColorMap 在OpenCV中对灰度图进行颜色映射,实现数据的色彩化
什么是色彩映射: 说直白点就是将各种数据映射成颜色信息,例如:温度,高度,压力,密度,湿度,城市拥堵数据等等 色彩化后更加直观表达 在OpenCV里可以使用 Mat im_gray = imread( ...
- ios--->上下拉刷新控件MJRefresh
上下拉刷新控件MJRefresh 一.类结构 MJRefreshComponent.h MJRefreshHeader.h MJRefreshFooter.h MJRefreshAutoFooter. ...
- Centos 7 最小化部署svn版本控制(http协议)
1.关闭selinux sh-4.2# sed -i 's/enforcing/disabled/' /etc/selinux/config sh-4.2# reboot 2.卸载防火墙 sh-4.2 ...