Android动态设置控件大小
16lz
2021-01-26
最近做新项目的过程中,由于有些控件不能固定大小,必须要采用动态的方式进行设置。在网上找了很久,比较可行的有2种方案。
第一种:动态测量参照控件,再进行设置:
<span style="font-size:14px;"> viewholder.bottomRLY.measure(0, 0); int rlyheight=viewholder.bottomRLY.getMeasuredHeight(); String[] mrsimgurl=accepts.get(position).getMrspicurl().split(","); int[] ids={R.id.image1_iv,R.id.image2_iv,R.id.image3_iv}; isImgVisible(mrsimgurl, ids);</span>经过测试,这种方式由于在加载控件的时候,需要执行测量,所以会导致有一些延迟。所以更推荐第二种方式:
第二种:采用OnGlobalLayoutListener监听:
<span style="font-size:14px;"> viewholder.bottomRLY.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { int rlyheight = viewholder.bottomRLY.getHeight(); RelativeLayout.LayoutParams params= (android.widget.RelativeLayout.LayoutParams) viewholder.imgLLY.getLayoutParams(); params.height=rlyheight; viewholder.imgLLY.setLayoutParams(params); // viewholder.bottomRLY.getViewTreeObserver().removeGlobalOnLayoutListener(this);}} );</span>此方式,在设置布局大小的时候,丝毫无延迟。原因是:通过OnGlobalLayoutListener事件,布局在加载完成或者发生变化的时候,都会被监听到。我们可以在布局加载完成的瞬间得到空间的宽和高。 更详细内容可参考:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0802/1641.html
更多相关文章
- Android(安卓)Fragment实践之简易的新闻应用
- 记android输入框添加删除功能
- Android中的菜单-ContextMenu,PopupMenu
- [Android]Service和Activity双向通信的两种方式
- Android(安卓)自定义加载Dialog 运行效果流畅
- android Java 提交数据到服务器的两种方式中四种方法
- Android入门:布局介绍
- AcitonBar自定义布局
- Android——高德地图地点搜索框