2012-09-07 87 views
0

我遇到以下問題。我正在使用RealViewSwitcher類(它擴展了ViewGroup,可以創建here)。我有三個視圖,在它們之間輕掃兩個方向的效果都很好。但是,當我動態改變方向時(例如,我在垂直視圖中的屏幕1上並將方向改爲水平方向) - 視圖僅顯示一部分(屏幕的三分之一是第一個視圖,另外兩個三分之一秒視圖)。Android RealViewSwitcher部分顯示視圖

代碼:

// 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(2012年9月10日):添加一些代碼

回答

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