2 myq 26 myq_26 于 2012.10.22 14:51 提问

检索视图的规模尺寸问题

我有一个视图由tablelayout、tablrows和textviews组成。看起来像一个网格。我需要得到这个网格的高度和宽度。当我动态的格式化网格或使用xml版本时,方法getheight() and getwidth()总是返回0。
谁能告诉我如何检索一个试图的尺寸规模?
以下是我在Debug的测试程序:

    import android.app.Activity; 
    import android.os.Bundle; 
    import android.widget.TableLayout; 
    import android.widget.TextView; 

    public class appwig extends Activity {   
        @Override 
        public void onCreate(Bundle savedInstanceState) { 
          super.onCreate(savedInstanceState); 
          setContentView(R.layout.maindemo);  
          int vh = 0;    
          int vw = 0; 

          TableLayout tl = (TableLayout) findViewById(R.id.board);   
          tl = (TableLayout) findViewById(R.id.board); 
          vh = tl.getHeight();       
          vw = tl.getWidth();       

          TextView tv = new TextView(this); 
          tv.setHeight(20); 
          tv.setWidth(20); 
          vh = tv.getHeight();       
          vw = tv.getWidth();    
        } 
} 

2个回答

znl_12
znl_12   2012.10.25 17:38
已采纳

把这些代码添加到onCreate()方法:

final TextView tv = (TextView)findViewById(R.id.image_test);
    ViewTreeObserver vto = tv.getViewTreeObserver();
    vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

        @Override
        public void onGlobalLayout() {
            LayerDrawable ld = (LayerDrawable)tv.getBackground();
            ld.setLayerInset(1, 0, tv.getHeight() / 2, 0, 0);
            ViewTreeObserver obs = tv.getViewTreeObserver();
            obs.removeGlobalOnLayoutListener(this);
        }

    });
csh_34
csh_34   2012.10.22 17:23

我提供一个可选择的方案,重写活动中的onWindowFocusChanged方法,然后从下面代码中读出。

@Override
public void onWindowFocusChanged (boolean hasFocus) {
        // 这儿会设置高度
        int height = myEverySoTallView.getMeasuredHeight(); 
}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!