onCreate中获取控件大小

来源:互联网 发布:淘宝客服聊天记录技巧 编辑:程序博客网 时间:2024/05/16 19:01
 //------------------------------------------------方法一    int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);    int h = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);    imageView.measure(w, h);    int height =imageView.getMeasuredHeight();    int width =imageView.getMeasuredWidth();    textView.append("n"+height+","+width);    //-----------------------------------------------方法二    ViewTreeObserver vto = imageView.getViewTreeObserver();    vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {        public boolean onPreDraw() {            int height = imageView.getMeasuredHeight();            int width = imageView.getMeasuredWidth();            textView.append("n"+height+","+width);            return true;        }    });    //-----------------------------------------------方法三       ViewTreeObserver vto2 = imageView.getViewTreeObserver();      vto2.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {        @Override          public void onGlobalLayout() {            imageView.getViewTreeObserver().removeGlobalOnLayoutListener(this);              textView.append("nn"+imageView.getHeight()+","+imageView.getWidth());        }      });  
以上三种方法
super.onCreate(savedInstanceState);

setContentView(R.layout.main);

之后调用获取控件大小
方法一: 比其他的两个方法多了一次计算,也就是多调用了一次onMeasure()方法,该方法虽然看上去简单,但是如果要目标控件计算耗时比较大的话(如listView等),不建议使用.
方法二,它的回调方法会调用很多次,并且滑动TextView的时候任然会调用,所以不建议使用.
方法三,比较合适.

当然,实际应用的时候需要根据实际情况而定.


转载自:http://my.eoe.cn/833798/archive/777.html

0 0
原创粉丝点击