我是一个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)
| 归档时间: |
|
| 查看次数: |
9170 次 |
| 最近记录: |