2014-01-24 16 views
1

我想實現一個TitlePageIndicator一個CirclePageIndicator和CirclePageIndicator創造這樣的事情:我想實現一個TitlePageIndicator並於同ViewPager

enter image description here

這是我的代碼:

pageAdapter = new MyPageAdapter(getSupportFragmentManager(), fragments); 
    ViewPager pager = (ViewPager) findViewById(R.id.viewpager); 
    pager.setAdapter(pageAdapter); 

    TitlePageIndicator mWordIndicator = (TitlePageIndicator)findViewById(R.id.word_indicator); 
    mWordIndicator.setViewPager(pager); 
    mWordIndicator.setOnPageChangeListener(pageListener); 

    CirclePageIndicator indicator = (CirclePageIndicator) findViewById(R.id.indicator); 
    indicator.setViewPager(pager); 
    indicator.setOnPageChangeListener(pageListener); 

OnPageChangeListener pageListener = new OnPageChangeListener() { 
    @Override 
    public void onPageSelected(int position) { 
     // TODO Auto-generated method stub 
     on_page_selected = position; 
     titleText.setText(pageTitle.get(position)); 
     setPageImages(); 

    } 

    @Override 
    public void onPageScrolled(int position, float arg1, int arg2) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onPageScrollStateChanged(int arg0) { 
     // TODO Auto-generated method stub 

    } 
}; 

的問題是,只有一個指標,在工作一段時間。如果我評論一個,其他作品。如果我離開這兩個未註釋,只有CirclePageIndicator的作品。你有什麼可以實現這個目標的建議嗎?還是有另一個我可以用來實現我的目標的圖書館?先謝謝你!

PS - 我發現一個重複的問題here,但沒有給出答案。

回答

4

爲了解決這個問題,你應該手動調用第一個PageIndicator的OnPageChangeListener回調函數。喜歡:

pageAdapter = new MyPageAdapter(getSupportFragmentManager(), fragments); 
ViewPager pager = (ViewPager) findViewById(R.id.viewpager); 
pager.setAdapter(pageAdapter); 

CirclePageIndicator indicator = (CirclePageIndicator) findViewById(R.id.indicator); 
indicator.setViewPager(pager); 


TitlePageIndicator mWordIndicator = (TitlePageIndicator)findViewById(R.id.word_indicator); 
mWordIndicator.setViewPager(pager); 
mWordIndicator.setOnPageChangeListener(pageListener); 



OnPageChangeListener pageListener = new OnPageChangeListener() { 
    @Override 
    public void onPageSelected(int position) { 
     // TODO Auto-generated method stub 
     on_page_selected = position; 
     titleText.setText(pageTitle.get(position)); 
     setPageImages(); 

     indicator.onPageSelected(position); 

    } 

    @Override 
    public void onPageScrolled(int position, float arg1, int arg2) { 
     // TODO Auto-generated method stub 
     indicator.onPageScrolled(position, arg1, arg2); 
    } 

    @Override 
    public void onPageScrollStateChanged(int arg0) { 
     // TODO Auto-generated method stub 

     indicator.onPageScrollStateChanged(arg0); 
    } 
}; 
+0

感謝您的這個不錯的解決方案。 –

0

問題是指標將自身設置爲onPageChangedlistener for viewPager以更新自身。 如果您實例化兩個指標,那麼只有第二個指標會收到通知(因爲ViewPager在一次只能有一個偵聽器)。 你應該修改了一下,以便有第二尋呼指示符指標的代碼中設置自己作爲聽者的第一指標。 在這一點上您將監聽器爲收聽第二個指標。 希望它很清楚。

相關問題