14

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

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

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

4

1 回答 1

29

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

编辑

例子:

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);
  }
});
于 2012-09-10T13:42:21.410 回答