2011-05-04 47 views
0

我實際上正在使用ViewFlipper來顯示3個不同的自定義視圖。這些視圖對於每個視圖都在ScrollView中(將ViewFlipper放在單個ScrollView中並不會使我的onFling手勢真正有效)。我實際上正在嘗試同步三個滾動條的位置。在這一點上使用單個ScrollView會更容易,但我試圖不使用此解決方案。Android - 如何確定ViewFlipper的兒童大小,當不顯示?

我爲每個ScrollView使用ScrollListener來設置其他ScrollView滾動位置,如在此線程中:Synchronise ScrollView scroll positions - android

問題是,這種方法將工作,但第一次。當我在ScrollView上時,其他兩個不是已經繪製好的,它們的高度爲空。所以設置滾動位置不起作用。

/*Instanciate ScollViews*/ 
    scrollViewLeft = (ScrollableScrollView) findViewById(R.id.scroll_prev); 
    scrollViewCenter =(ScrollableScrollView) findViewById(R.id.scroll_current); 
    scrollViewRight = (ScrollableScrollView) findViewById(R.id.scroll_next); 

/*Fill views with events*/ 
    setDayEvents(calIns.getPrevCal(),leftDayView);  
    setDayEvents(calIns.getActualCal(),centerDayView); 
    setDayEvents(calIns.getNextCal(),rightDayView); 

    scrollViewLeft.setScrollViewListener(this); 
    scrollViewCenter.setScrollViewListener(this); 
    scrollViewRight.setScrollViewListener(this); 

因此,最後我的問題是,我應該使用另一種方法來查找其他兩個視圖的滾動位置?或者我可以強制視圖在ViewFlipper中繪製?

謝謝:)

克萊門特。

回答

0

嘗試在更改視圖之前將位置保存在全局變量中,然後將其應用於當前視圖。

0

感謝Egor回答。我認爲這是一個好主意。我已經有一個Singleton來處理變量。所以我加入了getters和setters的可變位置。

這裏的問題是,即使我重寫我的自定義ScrollView中的方法「onSizeChanged」,這將僅適用於顯示的第一個視圖。我仍然開始進行Android開發,當他們還沒有準備好時(例如,當他們還沒有繪製時獲取寬度),我不知道如何處理與視圖之間的交互。

編輯1天后:

好吧,我發現了什麼問題,那是因爲我的scrollviews內部意見的大小沒有定義(滾動視圖是它裏面的觀點之前繪製)。所以通過設置視圖的「onSizeChanged」方法內的滾動效果很好。

+0

很高興聽到你找到了解決方案,我很高興我的答案幫助你!祝你好運! – Egor 2011-05-06 13:26:38