测量片段中的视图

时间:2012-09-10 13:38:05

标签: android android-fragments android-lifecycle

我需要知道ImageView的宽度和高度。有没有办法在片段中测量它?在标准活动中,我使用:

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    image.getWidth();
    image.getHeight();
}

但我在哪里可以在片段中使用image.getWidth();image.getHeight();

1 个答案:

答案 0 :(得分:25)

使用GlobalLayoutListener。您可以将监听器分配到ImageView中的onCreateView(),就像您在链接中的答案中所做的那样。对于主要活动,它也比onWindowFocusChanged()更可靠,所以我建议切换策略。

修改

示例:

final View testView = findViewById(R.id.view_id);
ViewTreeObserver vto = testView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
  @Override
  public void onGlobalLayout() {
    Log.d("TEST", "Height = " + testView.getHeight() + " Width = " + testView.getWidth());
    ViewTreeObserver obs = testView.getViewTreeObserver();
    obs.removeGlobalOnLayoutListener(this);
  }
});