我需要知道ImageView的宽度和高度。有没有一种方法可以对它进行分段测量?在标准 Activity 中,我使用以下代码:

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

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

最佳答案

使用GlobalLayoutListener。就像在链接中的答案中一样,将监听器分配给ImageView中的onCreateView()。对于主要 Activity ,它也比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);
  }
});

关于android - fragment View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12352920/

10-12 00:27
查看更多