簡體   English   中英

在我滑動之前,ViewPager標題不會出現

[英]ViewPager Title doesn't appear until I swipe it

我正在學習使用ViewPager和PagerTabStrip來實現導航欄。 我已經實現了它,我的問題是:每次我打開應用程序時,標題都沒有顯示,但是在我刷了一次之后,標題全部再次出現,然后一切正常。 代碼如下所示:

定制適配器

public class MyPagerAdapter extends PagerAdapter {
    private List<View> viewList;
    private List<String> titleList;

    public MyPagerAdapter(List<View> viewList, List<String> titleList){
        this.viewList = viewList;
        this.titleList = titleList;
    }

    @Override
    public int getCount() {
        return viewList.size();
    }

    @Override
    public boolean isViewFromObject(View view, Object o) {
        return view == o;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        container.addView(viewList.get(position));
        return viewList.get(position);
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView(viewList.get(position));
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return titleList.get(position);
    }
}

.xml文件:

<android.support.v4.view.ViewPager
    android:id="@+id/viewPager"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center">

    <android.support.v4.view.PagerTabStrip
        android:id="@+id/tab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        />

</android.support.v4.view.ViewPager>

這是“只需點擊應用圖標”的屏幕截圖: 在此輸入圖像描述

這是在我刷到第二頁之后: 在此輸入圖像描述

我真的很沮喪。 謝謝!!

這是com.android.support:appcompat-v7:23.0.0中出現的問題 您可以在此處參考https://code.google.com/p/android/issues/detail?id=183127

在該鏈接中,谷歌支持團隊已經提到在將來的版本中將修復缺陷。 所以現在解決方案是使用com.android.support:appcompat-v7:22.2.1構建項目

更新:如果可行,那么您可以繼續使用@nidheeshdas提供的另一種解決方案。 我試過簡單的項目; 它工作修改了@nidheeshdas的解決方案在Activity的onResume()里面

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

新更新:如上面的谷歌問題跟蹤鏈接和JP Ventura的評論中所述。 我嘗試過新版本的庫,問題似乎已得到解決。

而不是使用android.support.v4.view.PagerTabStrip ,使用android.support.design.widget.TabLayout顯示viewPager的選項卡。 它包含在Google Design Support Library中。

有關更多信息,請參閱此鏈接http://android-developers.blogspot.in/2015/05/android-design-support-library.html

只有幾行:

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 

要更改標題,請在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);
}

我最近也開始遇到這個問題,經過一些測試后我發現我發現了Android最新的支持包更新中的一個錯誤。

問題出現在com.android.support:appcompat-v7:23.0.0中

嘗試將依賴項更改回com.android.support:appcompat-v7:22.2.1 (第二次最新更新),看看是否有效。

不幸的是,我還沒有找到任何解決方案來使其與最新的支持包更新一起使用。

嘗試這個。 它似乎對我有用。

@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將尋呼機設置為1然后再返回0.這使得標題出現在第一次加載頁面時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM