我实现了onConfigurationChnage(..)来读取方向配置chnage上的视图高度和宽度值
@Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); DisplayMetrics displaymetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); int height = displaymetrics.heightPixels; int width = displaymetrics.widthPixels; Log.i(TAG,"onConfigurationChanged: "+newConfig.orientation+","+height+","+width + ","+mTempeFrameLayout.getWidth()); }@H_301_3@但它总是回复旧值,如果方向得到改变,它会给出最后一个方向(可能)值.
使用displaymetrics的屏幕宽度/高度正确,但同样不适用于任何视图.
任何人都有想法..如何在方向变化上得到正确的价值?
解决方法
getWidth()在View布局时返回宽度,这意味着您需要等到它被绘制到屏幕上.在重新绘制新配置的视图之前调用onConfigurationChanged,所以我认为你不能在以后获得新的宽度.
@Override public void onConfigurationChanged(Configuration newConfiguration) { super.onConfigurationChanged(newConfiguration); final View view = findViewById(R.id.scrollview); ViewTreeObserver observer = view.getViewTreeObserver(); observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Log.v(TAG,String.format("new width=%d; new height=%d",view.getWidth(),view.getHeight())); view.getViewTreeObserver().removeOnGlobalLayoutListener(this); } }); }@H_301_3@