我试图尽可能动态地向linearLayout添加视图(取决于屏幕宽度).
我在屏幕上显示linearLayout之前执行此 *** 作.
我的linearLayout:
<linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="fill_parent" androID:layout_height="fill_parent" androID:layout_gravity="center" androID:background="#666"/>
我在linearLayout中显示的视图:
<FrameLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:paddingleft="10dp" androID:paddingRight="10dp" androID:background="#999"> <ImageVIEw androID:layout_wIDth="48dp" androID:layout_height="48dp" androID:src="@drawable/no_photo"/></FrameLayout>
我添加了布局视图:
int allitems = 50;int currentItem = 0;while(currentItem < allitems){ FrameLayout vIEw = (FrameLayout) inflater.inflate(R.layout.fl, null); linearLayout.addVIEw(vIEw); if (linearLayout.getMeasureDWIDth() >= this.getWIDth()) { linearLayout.removeVIEw(vIEw); break; }}
但linearLayout.getMeasureDWIDth()和this.getWIDth()为0;
我知道,我必须使用VIEw.measure方法计算视图大小才可见,但我不知道它在何处以及如何使用.
解决方法:
编辑您的代码如下:
display display = getwindowManager().getDefaultdisplay();int maxWIDth = display.getWIDth();int wIDthSoFar=0;int allitems = 50;int currentItem = 0;while(currentItem < allitems) { FrameLayout vIEw = (FrameLayout) inflater.inflate(R.layout.fl, null); linearLayout.addVIEw(vIEw); vIEw .measure(0, 0); wIDthSoFar = wIDthSoFar + vIEw.getMeasureDWIDth(); if (wIDthSoFar >= maxWIDth) { linearLayout.removeVIEw(vIEw); break; }}
希望这对你有所帮助
总结以上是内存溢出为你收集整理的android – 在显示之前计算视图测量全部内容,希望文章能够帮你解决android – 在显示之前计算视图测量所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)