2011-05-04 5 views
0

실제로 ViewFlipper를 사용하여 3 가지 다른 사용자 정의보기를 표시하는 응용 프로그램을 만들고 있습니다. 이러한 뷰는 각각 하나의 ScrollView에 있습니다 (단일 ScrollView에 ViewFlipper를 배치하면 onFling 제스처가 실제로 효율적이지 않습니다). 그리고 저는 실제로 세 개의 스크롤바 위치를 동기화하려고합니다. 이 시점에서 하나의 ScrollView를 사용하면 더 쉬울 것이지만이 솔루션을 사용하지 않으려 고합니다.안드로이드 - 표시되지 않을 때 ViewFlipper 자식 크기를 어떻게 결정합니까?

각 ScrollView에 ScrollListener를 사용하여 ScrollView 스크롤 위치를이 스레드와 같이 설정합니다 (Synchronise ScrollView scroll positions - android).

문제는이 방법이 처음에는 작동하지만 문제가되는 것입니다. 내가 ScrollView에있을 때, 다른 두 가지는 이미 그려지지 않았고 높이는 null입니다. 따라서 스크롤 위치를 설정하는 것이 효과적이지 않습니다.

/*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와 setter로 가변 위치를 추가합니다.

여기서 문제는 사용자 정의 ScrollView에서 "onSizeChanged"메소드를 덮어 쓰더라도 첫 번째보기에만 적용됩니다.

추신 : 저는 아직 Android 개발에서 시작하고 있으며 준비가되어 있지 않을 때보기에서 상호 작용을 처리하는 방법을 알지 못합니다 (예 : 아직 그려지지 않은 상태에서 폭을 얻는 것과 같이). 일일 나중에

편집은 다음 scrollviews 안에 내 뷰의 크기가합니다 (있는 ScrollView가 내부보기 전에 그려진) 정의되지 않았기 때문에 나는 문제가 무엇인지 발견

좋아, 그것은이다. 따라서 뷰의 "onSizeChanged"메서드 내에서 스크롤을 설정하면 잘 작동합니다.

+0

솔루션을 찾았으며 내 답변이 도움이 되었기 때문에 기쁩니다. 행운을 빕니다! – Egor

관련 문제