文档章节

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

NCThinker
 NCThinker
发布于 2014/04/23 15:44
字数 128
阅读 3612
收藏 4

 

如图所示,要实现,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是一个左边图片右边文字,这个方法似乎不行,文字会自动换行
PopupWindow 实现自定义弹出层

Android系统的AlertDailog ,Menu。。。之类控件,我不确定能否自定义样式。 就是在应用中自定义一套主题。 因为系统Menu菜单极其单一。样式丑陋,而且字体,字号都无法修改。 想到用PopupWi...

鉴客
2012/01/13
1K
0
教你如何创建类似QQ的android弹出菜单

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

长平狐
2012/08/21
521
0
教你如何创建类似QQ的android弹出菜单

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

长平狐
2012/08/14
7.3K
1
Android提高十八篇之自定义Menu(TabMenu)

本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处! 快要过年了,在这里先祝广大的技术宅兔年快乐! 用过UCWEB-Android版的人都应该对其特殊的menu有印象,把menu做成Tab-Menu(支持...

晨曦之光
2012/03/14
700
1
教你如何创建类似QQ的android弹出菜单

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

长平狐
2012/08/09
336
0

没有更多内容

加载失败,请刷新页面

加载更多

在Javascript中Eval函数的使用

【eval()函数】 JavaScript有许多小窍门来使编程更加容易。 其中之一就是eval()函数,这个函数可以把一个字符串当作一个JavaScript表达式一样去执行它。 举个小例子: var the_unevaled_ans...

花漾年华
17分钟前
3
0
[日更-2019.5.22、23] Android 系统的分区和文件系统(二)--Android 文件系统中的文件

声明 Android系统中有很多分区,每个分区内的文件系统一般都不同的,使用ADB进入系统/目录下可发现挂载这很多的目录,不同的目录中可来自不同的分区及文件系统; 那么,就来分下这些目录里面...

小馬佩德罗
21分钟前
2
0
数组操作相关算法

/*数组的相关的算法操作:1、在数组中找最大值/最小值*/class Test11_FindMax{public static void main(String[] args){int[] array = {4,2,6,8,1};//在数组中找最大...

architect刘源源
今天
2
0
okhttp3 以上版本在安卓9.0无法请求数据的解决方案

应用官方的说明:在 Android 6.0 中,我们取消了对 Apache HTTP 客户端的支持。 从 Android 9 开始,默认情况下该内容库已从 bootclasspath 中移除且不可用于应用。且Android P 限制了明文流量...

chenhongjiang
今天
12
0
简单示例:NodeJs连接mysql数据库

开篇引用网上的说法: 简单的说 Node.js 就是运行在服务端的 JavaScript。Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。Node.js是一个事件驱动I/O服务端JavaScript环境,基于...

李朝强
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部