2013-09-26 49 views
0

我在我的活動佈局中使用SwipeView(http://jasonfry.co.uk/blog/android-swipeview/)以顯示多個頁面。此外,我想手動處理方向更改,因此我將自定義視圖(swipeView)未在方向更改後正確調整大小

android:configChanges="orientation|keyboardHidden|screenSize" 

添加到應用程序的清單中,以便不調用onDestroy/onCreate。不幸的是,通過這樣做,swipeview中的元素不會相應地調整大小。我已經嘗試以下方法:

  • 無效
  • requestLayout
  • forceLayout

他們都不奏效了! 任何幫助,將不勝感激。 謝謝

+0

佈局xml文件和清單可能是一個很好的起點,可供我們快速查看。一旦這些更改被禁用,幾個方面就成爲我們自己的責任,並且通常會在onConfigurationChanged()中捕獲並管理這些更改。或者它可能是佈局結構中的一個小呃。 –

回答

0

如果有人爲此付出了努力,我終於找到了解決方案。 訣竅是請求佈局不在swipeview本身上,而是在getChildContainer()上。

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    SwipeView swipeView = (SwipeView)findViewById(R.id.swipeView); 
    int pageWidth = ((WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getWidth(); 
    swipeView.setPageWidth(pageWidth); 
    for (int i = 0; i < swipeView.getChildContainer().getChildCount(); i++) 
     swipeView.getChildContainer().getChildAt(i).getLayoutParams().width = pageWidth; 
    swipeView.getChildContainer().requestLayout(); 
    swipeView.scrollToPage(swipeView.getCurrentPage());  
} 
相關問題