0

我有以下问题。我正在使用 RealViewSwitcher 类(它扩展了 ViewGroup 并且可以在此处创建)。我有三个视图,并且在它们之间滑动在两个方向上都很好。但是,当我动态更改方向时(例如,我在垂直视图中的屏幕 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):添加了一些代码

4

1 回答 1

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);
    }
于 2012-10-13T05:58:49.350 回答