文档章节

使用PopupWindow弹出menu菜单,解决宽度自适应的问题

NCThinker
 NCThinker
发布于 2014/04/23 15:44
字数 128
阅读 3471
收藏 4
点赞 0
评论 1

 

如图所示,要实现,PopupWindow弹出的菜单随内容的宽度决定,目前找到自认为比较好的办法是,重写ListView的onMeasure()方法。然后就可以实现了,在此mark一下。代码如下:

@Override
	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
	    int maxWidth = meathureWidthByChilds() + getPaddingLeft() + getPaddingRight();
	    super.onMeasure(MeasureSpec.makeMeasureSpec(maxWidth, MeasureSpec.EXACTLY), heightMeasureSpec);     
	}

	public int meathureWidthByChilds() {
	    int maxWidth = 0;
	    View view = null;
	    for (int i = 0; i < getAdapter().getCount(); i++) {
	        view = getAdapter().getView(i, view, this);
	        view.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);
	        if (view.getMeasuredWidth() > maxWidth){
	            maxWidth = view.getMeasuredWidth();
	        }
	    }
	    return maxWidth;
	}

 

© 著作权归作者所有

共有 人打赏支持
NCThinker

NCThinker

粉丝 18
博文 14
码字总数 6074
作品 0
深圳
程序员
加载中

评论(1)

当空皓月
当空皓月
你好!如果list是一个左边图片右边文字,这个方法似乎不行,文字会自动换行
Android 中 PopupWindow 在7.0后适配

这里主要记录一次踩坑的经历。 需求:如上图左侧效果,想在按钮的下方弹一个PopupWindow。嗯,很简单一个效果,然当适配7.0后发现这个PopupWindow显示异常,然后网上找到了下面这种方案。 7....

smart_dev ⋅ 05/17 ⋅ 0

android 对绘制的文本添加动画

场景: 存在较多绘制内容的区域需要某些动画效果, 需要尽量少修改视图的绘制方法,做到动画与绘制分离。 看个简单例子: 我在一个视图上绘制了一行文字,先看一下绘制部分的代码: 现在需要...

飛飛萨 ⋅ 05/28 ⋅ 0

GridView+PopupWindow自定义数字键盘

public class SimpleGridViewTest extends Activity { EditText editText; private PopupWindow popupWindow; private GridView mGridView; private View contentview; private List datas =......

wx5a18b5d1780d3 ⋅ 04/19 ⋅ 0

android Dialog和Popupwindow,不显示

测试的是华为荣耀平板,在BaseActivity中有个方法,在里面构造dialog或popupwindow,在子类activity中手动点击按钮调用该方法,每次都正常显示弹窗,但是在回调接口中调用基本就不显示,偶尔...

Gowcage ⋅ 06/11 ⋅ 0

【Android】ListPopupWindow

ListPopupWindow ListPopupWindow简述 ListPopupWindow最低要求为api11,为了兼容到2.1, 可以使用包含在support V7包中实现。从效果上来讲,ListPopupWindow就是一个弹出层的ListView,比较适...

xesam ⋅ 2014/12/04 ⋅ 0

Android第四十四天

一、菜单 (1)选择菜单(OptionsMenu) 第一种方法: 1、在res目录下建立一个名称是menu的文件夹; 2、在menu下面建立一个XML文件(默认就是menu的类型) 3、在建立的XML文件中添加菜单的选...

黄晓磊 ⋅ 2016/08/30 ⋅ 0

android PopupWindow 自适应宽度

PopupWindow弹出的菜单随内容的宽度决定,目前找到自认为比较好的办法是,重写ListView的onMeasure()方法。然后就可以实现了,在此mark一下。 @Overrideprotected void onMeasure(int widthM...

圣杰是也 ⋅ 2015/07/04 ⋅ 0

传说中的WindowManager

作者:不洗碗工作室 - catango 版权归作者所有,转载请注明出处 通常情况下,我们使用的Dialog,Activity等需要显示到屏幕上面的内容都需要WindowManager来操作的,WindowManager是一个非常重要...

不洗碗工作室 ⋅ 06/03 ⋅ 0

Fragment中弹出popupwindow菜单

大家好,请教一个在Fragment类中实现点击菜单弹出自定义菜单项的问题: 1,setHasOptionsMenu(true); 2,public void onPrepareOptionsMenu(Menu menu){ Log.e(TAG,"onPrepareOptionsMenu");...

dogdog ⋅ 2014/07/15 ⋅ 0

教你如何创建类似QQ的android弹出菜单

热心推荐: Android ListView两种长按弹出菜单方式 popupwindow实现弹出菜单效果 Android人才招聘——最新招聘 大家可能看到 android 的自带的系统菜单比较难看,如图: 很多应用都自己定义了系...

长平狐 ⋅ 2012/08/21 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

在树莓派上搭建一个maven仓库

在树莓派上搭建一个maven仓库 20180618 lambo init 项目说明 家里有台树莓派性能太慢。想搭建一个maven私服, 使用nexus或者 jfrog-artifactory 运行的够呛。怎么办呢,手写一个吧.所在这个...

林小宝 ⋅ 16分钟前 ⋅ 0

Spring发展历程总结

转自与 https://www.cnblogs.com/RunForLove/p/4641672.html 目前很多公司的架构,从Struts2迁移到了SpringMVC。你有想过为什么不使用Servlet+JSP来构建Java web项目,而是采用SpringMVC呢?...

onedotdot ⋅ 48分钟前 ⋅ 0

Python模块/包/库安装(6种方法)

Python模块/包/库安装(6种方法) 冰颖机器人 2016-11-29 21:33:26 一、方法1: 单文件模块 直接把文件拷贝到 $python_dir/Lib 二、方法2: 多文件模块,带setup.py 下载模块包(压缩文件zip...

cswangyx ⋅ 今天 ⋅ 0

零基础学习大数据人工智能,学习路线篇!系统规划大数据之路?

大数据处理技术怎么学习呢?首先我们要学习Python语言和Linux操作系统,这两个是学习大数据的基础,学习的顺序不分前后。 Python:Python 的排名从去年开始就借助人工智能持续上升,现在它已经...

董黎明 ⋅ 今天 ⋅ 0

openJdk和sun jdk的区别

使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的OpenJDK, 那么到底什么是OpenJDK,它与SUN JDK有什么关系和区别呢? 历史上的原因是,Ope...

jason_kiss ⋅ 今天 ⋅ 0

梳理

Redux 是 JavaScript 状态容器,提供可预测化的状态管理。 它是JS的状态容器,是一种解决问题的方式,所以即可以用于 react 也可以用于 vue。 需要理解其思想及实现方式。 应用中所有的 stat...

分秒 ⋅ 今天 ⋅ 0

Java 后台判断是否为ajax请求

/** * 是否是Ajax请求 * @param request * @return */public static boolean isAjax(ServletRequest request){return "XMLHttpRequest".equalsIgnoreCase(((HttpServletReques......

JavaSon712 ⋅ 今天 ⋅ 0

Redis 单线程 为何却需要事务处理并发问题

Redis是单线程处理,也就是命令会顺序执行。那么为什么会存在并发问题呢? 个人理解是,虽然redis是单线程,但是可以同时有多个客户端访问,每个客户端会有 一个线程。客户端访问之间存在竞争...

码代码的小司机 ⋅ 今天 ⋅ 0

到底会改名吗?微软GVFS 改名之争

微软去年透露了 Git Virtual File System(GVFS)项目,GVFS 是 Git 版本控制系统的一个开源插件,允许 Git 处理 TB 规模的代码库,比如 270 GB 的 Windows 代码库。该项目公布之初就引发了争...

linux-tao ⋅ 今天 ⋅ 0

笔试题之Java基础部分【简】【二】

1.静态变量和实例变量的区别 在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变...

anlve ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部