ViewPager Title doesn't appear until I swipe it

后端 未结 4 1592
名媛妹妹
名媛妹妹 2021-01-11 12:41

I am learning to use ViewPager and PagerTabStrip to implement navigation bar. I have implemented it, my problem is: every time I open the app fresh, the titles don\'t show,

相关标签:
4条回答
  • 2021-01-11 13:11

    Instead of using android.support.v4.view.PagerTabStrip , use android.support.design.widget.TabLayout for displaying tabs for viewPager. It is included in Google Design Support Library.

    See this link for more information http://android-developers.blogspot.in/2015/05/android-design-support-library.html

    Just few lines:

    viewPager=(ViewPager)v.findViewById(R.id.viewPager);
    
    ViewPagerAdapter adapter=new ViewPagerAdapter(this.getChildFragmentManager(),doctor);
    adapter.setViewPagerFragmentListener(this);
    viewPager.setAdapter(adapter);
    
    tabLayout.setupWithViewPager(viewPager);  //Sync Tabs with viewPager
    tabLayout.setTabsFromPagerAdapter(adapter);  //Setup tabs titles 
    

    And to change the titles use the following code in ViewPagerAdapter

    @Override
    public CharSequence getPageTitle(int position) {
        switch (position){
            case 0:
                return "Title 1";
            case 1:
                return "Title 2";
            case 2:
                return "Title 3";
        }
        return super.getPageTitle(position);
    }
    
    0 讨论(0)
  • 2021-01-11 13:20

    I also recently started to have this problem, and after a little bit of testing I think I found a bug in Android's latest support package update.

    The problem appears in to be in com.android.support:appcompat-v7:23.0.0.

    Try changing the dependency back to com.android.support:appcompat-v7:22.2.1 (second latest update) and see if that works.

    Unfortunately, I have yet to find any solution to get it to work with the latest support package update.

    0 讨论(0)
  • 2021-01-11 13:25

    Try this. Its seems to be working for me.

    @Override
    protected void onResume() {
        super.onResume();
        pager.setCurrentItem(1);
        Task.delay(500).continueWith(new Continuation<Void, Object>() {
            @Override
            public Object then(Task<Void> task) throws Exception {
                pager.setCurrentItem(0);
                return null;
            }
        }, Task.UI_THREAD_EXECUTOR);
    }
    

    onResume set the pager to 1 and then back to 0. This makes the title appear the page loads the first time.

    0 讨论(0)
  • 2021-01-11 13:32

    It is an issue appeared in com.android.support:appcompat-v7:23.0.0. You can refer here https://code.google.com/p/android/issues/detail?id=183127

    In that link google support team have mention that defect would be fixed in future releases. So for now solution is build the project using com.android.support:appcompat-v7:22.2.1

    Update : If feasible for you then you can go ahead with another solution provided by @nidheeshdas. I have tried on simple project; it work Modified solution of @nidheeshdas inside onResume() of Activity

    viewPager.setCurrentItem(1);
        viewPager.postDelayed(new Runnable() {
            @Override
            public void run() {
                viewPager.setCurrentItem(0);
            }
        },100);
    

    New Update: As mentioned in the above google issue tracker link and comments from JP Ventura. I have tried with new version of library and issue seems to be fixed.

    0 讨论(0)
提交回复
热议问题