无法弄清楚如何获得视图/布局宽度/高度

Kar*_*Rei 3 android

我是一个Android新手.这应该是世界上最简单的东西,但弄清楚它会让我感到沮丧:如何获得视图或布局的尺寸?

标准方法似乎是这样的:

((的LinearLayout)this.findViewById(R.id.MyLayout))的getWidth();

除了这总是返回零,因为我正在尝试在Activity启动时执行此操作(onCreate)并且尚未设置几何.我尝试进入睡眠状态,让它有机会设置布局,除非在onCreate返回之前不会设置布局.所以它显然没有线程化.:P

我发现一堆页面正在讨论覆盖各种不同的回调函数,以确保在调用getWidth时加载了布局 - 但是当我尝试将覆盖放在我的Activity中时,所有这些都抛出了错误.所以我可以假设它们是被测量的布局和/或视图的回调.问题在于我没有使用自定义视图/布局类 - 只是标准类.所以我不能只是添加一个覆盖,据我所知.

谁知道我应该怎么做?我已经花了8个小时来解决这个问题并且无处可去.在大多数开发环境中,这通常是一件非常简单的事情!

plu*_*ind 21

final View view = .....; // your view

view.getViewTreeObserver().addOnGlobalLayoutListener(
    new ViewTreeObserver.OnGlobalLayoutListener() {

      @Override
      public void onGlobalLayout() {
        // make sure it is not called anymore 
        view.getViewTreeObserver().removeGlobalOnLayoutListener(this);

        // your code to get dimensions of the view here:
        // ...
      }
    });
Run Code Online (Sandbox Code Playgroud)