2013-09-11 2 views
1

Я пытаюсь настроить горизонтальные прокрутки, и я видел людей, которые используют ViewPager.Проблема с ViewPager

Ive получил это отчасти, я могу вертикально прокручивать между моими фрагментами, но я не получаю никаких вкладок вверху, чтобы выбрать другую вкладку.

Вот мой код

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 

<android.support.v4.view.ViewPager 
    android:id="@+id/viewpager" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

MyPageAdapter pageAdapter; 
Context ctx; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_home); 
    ctx = this; 

    ActionBar actionBar = getActionBar(); 

    assert actionBar != null; 

    if (savedInstanceState != null) { 
     actionBar.setSelectedNavigationItem(savedInstanceState.getInt("tab", 0)); 
    } 

    List<Fragment> fragments = getFragments(); 
    pageAdapter = new MyPageAdapter(getSupportFragmentManager(), fragments); 
    ViewPager pager = (ViewPager)findViewById(R.id.viewpager); 
    pager.setAdapter(pageAdapter); 
} 

private List<Fragment> getFragments(){ 
    List<Fragment> fList = new ArrayList<Fragment>(); 

    fList.add(MyFragment.newInstance("MyFragment 1")); 
    fList.add(MyFragment.newInstance("MyFragment 2")); 
    fList.add(MyFragment.newInstance("MyFragment 3")); 

    return fList; 
} 



class MyPageAdapter extends FragmentPagerAdapter { 
    private List<Fragment> fragments; 

    public MyPageAdapter(FragmentManager fm, List<Fragment> fragments) { 
     super(fm); 
     this.fragments = fragments; 
    } 
    @Override 
    public Fragment getItem(int position) { 
     return this.fragments.get(position); 
    } 

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

Я также включая библиотеку поддержки v4

dependencies { 
    compile ('com.android.support:support-v4:13.0.0', 'com.google.android.gms:play-services:3.1.36') 
    compile files('/libs/android-async-http-1.4.3.jar') 
} 

Однако в моем макете XML я получаю предупреждение о том, Element андроида .support.v4.view.ViewPager здесь не разрешен.

Не правильно ли я включил библиотеку и почему я не вижу никаких вкладок?

ответ

1

Вам необходимо, чтобы добавить вкладки к вашему ActionBar.

Делают это так:

final ActionBar bar = getActionBar(); 
     bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
     bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE); 

     mTabsAdapter = new TabsAdapter(this, mViewPager); 
     mTabsAdapter.addTab(bar.newTab().setText("Tab 1"), 
       YourFragment.class, null); 
     mTabsAdapter.addTab(bar.newTab().setText("Tab 2"), 
       YourFragment.class, null); 
     mTabsAdapter.addTab(bar.newTab().setText("Tab 3"), 
       YourFragment.class, null); 

Кроме того, вы будете нуждаться в ActionBar.TabListener и ViewPager.OnPageChangeListener, чтобы изменения ViewPager к выбранной страницы при нажатии на вкладку.

Смотрите здесь для полного примера: http://developer.android.com/reference/android/support/v4/view/ViewPager.html

+0

Perfect :) Спасибо. –

0

Вам не нужно иметь панель действий, если вы просто хотите, чтобы отобразить заголовки страниц, что может быть достигнуто путем изменения макета в

<android.support.v4.view.ViewPager 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/pager" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<android.support.v4.view.PagerTitleStrip 
    android:id="@+id/pager_title_strip" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="top" 
    android:background="#33b5e5" 
    android:textColor="#fff" 
    android:paddingTop="4dp" 
    android:paddingBottom="4dp" /> 

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

как с примером here, но вам по-прежнему необходимо создать обычай FragmentStatePagerAdapter.

Вот как я это сделал в своем приложении Android 2.3.5.

Смежные вопросы