我是新手,所以对我很轻松。 我正在尝试执行一段代码,该代码需要在旋转设备后知道ImageView的新宽度和高度。
以下代码捕获配置更改,但ImageView尚未实际更改,因此无法获得准确的高度和宽度。
// This fires whenever the configuration of the device changes (Portrait to Landscape of vice versa)
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
}
// This procedure moves the items based on the new size of the ImageView.
this.ShowMeasurements();
}
我已经搜索并查看了许多应该起作用的方法,但我很快就会出现。
任何建议都将受到赞赏。
答案 0 :(得分:0)
可以肯定的是,该视图具有准确的尺寸,您可以在onCreate()
中尝试此代码:
imageView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int viewWidth = imageView.getWidth();
int viewHeight = imageView.getHeight();
if (viewWidth > 0 && viewHeight > 0) {
//do some stuff here
}
//we remove this listener to not being notified every time the view
//changes it's size.
//But if you need this info every time, just remove the last line
imageView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
});
其中,imageView
是对ImageView