最近做新项目的过程中,由于有些控件不能固定大小,必须要采用动态的方式进行设置。在网上找了很久,比较可行的有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



更多相关文章

  1. Android(安卓)Fragment实践之简易的新闻应用
  2. 记android输入框添加删除功能
  3. Android中的菜单-ContextMenu,PopupMenu
  4. [Android]Service和Activity双向通信的两种方式
  5. Android(安卓)自定义加载Dialog 运行效果流畅
  6. android Java 提交数据到服务器的两种方式中四种方法
  7. Android入门:布局介绍
  8. AcitonBar自定义布局
  9. Android——高德地图地点搜索框

随机推荐

  1. Android中隐藏标题栏和状态栏
  2. flutter 混合开发
  3. protected-broadcast 规范使用(ERROR: Se
  4. Android 手机获取时区
  5. Android EventBus二三事
  6. Android编译打包-gradle task 的依赖
  7. Android进度条学习一
  8. Android Activity的生命周期及四种启动模
  9. android截取屏幕图片
  10. Android获取网络图片并显示的方法