我遇到了以下问题。我正在使用RealViewSwitcher类(它扩展了ViewGroup并且可以创建here)。我有三个视图,它们之间的滑动在两个方向都很好。但是,当我动态更改方向时(例如,我在垂直视图中的屏幕1上并将方向更改为水平) - 视图仅部分显示(屏幕的三分之一是第一个视图,另外两个是第三个 - 第二个视图)。
代码:
// my activity method
@Override
public void onConfigurationChanged(Configuration newConfig)
{
// ...
realViewSwitcher.setCurrentScreen(1);
// ...
}
// realViewSwitcher method
public void setCurrentScreen(int currentScreen) {
mCurrentScreen = Math.max(0, Math.min(currentScreen, getChildCount() - 1));
scrollTo(mCurrentScreen * getWidth(), 0);
invalidate();
}
UPD(10.09.2012):添加了一些代码
答案 0 :(得分:2)
将以下代码段添加到RealViewSwitcher类
public void orientationSnapToScreen(Context ctx)
{
Display display = ((WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int displayWidth = display.getWidth();
mNextScreen = Math.max(0, Math.min(getCurrentScreen(), getChildCount() - 1));
final int newX = mNextScreen * displayWidth;
final int delta = newX - getScrollX();
mScroller.startScroll(getScrollX(), 0, delta, 0, 0);
}
并将以下方法添加到您调用RealViewSwitcher类
的主活动中@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
realViewSwitcher.orientationSnapToScreen(this);
}