在创建表单后获取布局宽度和高度

时间:2014-07-22 12:11:57

标签: android layout height width onstart

你好我有兴趣在加载布局后使用android获取布局宽度和高度,然后根据这些测量值来创建图片,文本框,具有适合我的游戏运行的Android设备尺寸的按钮! 这怎么可能 ?我应该在哪个函数中放入以下代码:

layout.getWidth();
layout.getHeight();

所以它不会返回0?在形式实际加载之前实现上述获得宽度和高度会更方便但是从我看到的这个更加困难 到目前为止,这是我的代码,试图进行这些测量:

protected void onStart() {
    super.onStart();
    txt = (TextView) findViewById(R.id.textView);
    img = (ImageView) findViewById(R.id.imageView2);
    layout = (RelativeLayout) findViewById(R.id.MyLayout);
    GameHandler();
}

public void GameHandler()
{
    txt.setText(""+layout.getHeight()) ; //this always returns 0
}

谢谢你的帮助:)

2 个答案:

答案 0 :(得分:0)

OnGlobalLayoutListener是迄今为止我发现的最好的回调。

layout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
         // This is a async callback. get the view size here.
         txt.setText(""+layout.getHeight()) ;
    }
});

layout必须是一个类变量,否则你必须使用final修饰符。

答案 1 :(得分:0)

试试

layoutView.post(new Runnable() {

        @Override
        public void run() {
            // Get width and height here
        }
    });