14

ImageView の幅と高さを知る必要があります。フラグメントで測定する方法はありますか? 標準のアクティビティでは、これを使用します:

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

しかし、どこでimage.getWidth();and image.getHeight();in fragment を使用できますか?

4

1 に答える 1

29

GlobalLayoutListenerを使用します。リンクの回答と同じように、リスナーをImageViewin に割り当てます。また、メインのアクティビティ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);
  }
});
于 2012-09-10T13:42:21.410 に答える