Android RealViewSwitcher部分显示视图

时间:2012-09-07 09:30:00

标签: android swipeview

我遇到了以下问题。我正在使用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):添加了一些代码

1 个答案:

答案 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);
    }