activity 中获取控件的宽高

1.第一种方式:

TextView textview3 = findViewById(R.id.textview3); 
textView3.post(new Runnable() {
            @Override
            public void run () {
                int width = textView3.getWidth();
                ViewGroup.LayoutParams layoutParams = button2.getLayoutParams();
                layoutParams.width = width;
                button2.setLayoutParams(layoutParams);
            }
        });

view的post方法,runnable对象中的方法会在View的measure、layout等事件后触发UI事件队列会按顺序处理事件。在setContentView()被调用后,事件队列中会包含一个要求重新layout的message,所以任何你post到队列中的东西都会在Layout发生变化后执行。

activity中先这行oncreate,然后才是第一次调用onmeasure,

2.第二种方式,同过treeobserve

firstTxt = (TextView) findViewById(R.id.hello_word_txt);  
        ViewTreeObserver viewTreeObserver = firstTxt.getViewTreeObserver();  
        viewTreeObserver.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {  
            @Override  
            public boolean onPreDraw() {  
                int height = firstTxt.getHeight();  
                int width = firstTxt.getWidth();  
                Log.v("获取TextView宽高", "宽度:" + width + ",高度:" + height);  
                return true;  
            }  
        });  
  

 

posted @ 2017-12-25 11:59  贺长寿  阅读(713)  评论(0编辑  收藏  举报