我需要知道ImageView的宽度和高度。有没有办法在片段中测量它?在标准活动中,我使用:
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
image.getWidth();
image.getHeight();
}
但我在哪里可以在片段中使用image.getWidth();
和image.getHeight();
?
答案 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);
}
});