Android动态设置控件大小

来源:互联网 发布:java double消除误差 编辑:程序博客网 时间:2024/06/18 05:40

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



0 0
原创粉丝点击