[英]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.