Подтвердить что ты не робот

Измерение вида в фрагменте

Мне нужно знать ширину и высоту ImageView. Есть ли способ измерить его по фрагменту? В стандартной операции я использую это:

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

Но где я могу использовать image.getWidth(); и image.getHeight(); в фрагменте?

4b9b3361

Ответ 1

Используйте 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);
  }
});