Ваш файл макета будет иметь выступы на верхней и ViewPager на дне, как показано на фрагменте кода ниже:
<com.astuetz.PagerSlidingTabStrip
android:id="@+id/tabs"
app:pstsShouldExpand="true"
app:pstsTextAllCaps="true"
android:layout_width="match_parent"
android:layout_height="48dp">
</com.astuetz.PagerSlidingTabStrip>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white" />
Создать Фрагмент
создать фрагмент [re s/layout/fragment_page.xml] и скопируйте и вставьте этот код
<TextView
android:id="@+id/tvTitle"
android:text="Fragment #X"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" />
В PageFragment.Java определяют логику инфляции для секции фрагмента содержимого вкладки:
public class PageFragment extends Fragment {
private int mPage;
public static final String ARG_PAGE = "ARG_PAGE";
public static PageFragment newInstance(int page) {
Bundle args = new Bundle();
args.putInt(ARG_PAGE, page);
PageFragment fragment = new PageFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mPage = getArguments().getInt(ARG_PAGE);
}
// Inflate the fragment layout we defined above for this fragment
// Set the associated text for the title
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_page, container, false);
TextView tvTitle = (TextView) view.findViewById(R.id.tvTitle);
tvTitle.setText("Fragment #" + mPage);
return view;
}
Реализовать FragmentPagerAdapter
Следующая вещь, чтобы сделать, это реализовать адаптер для ViewPager, который контролирует порядок вкладки.
public class SampleFragmentPagerAdapter extends FragmentPagerAdapter{
final int PAGE_COUNT = 3;
private String tabTitles[] = new String[] { "Tab1", "Tab2", "Tab3" };
public SampleFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return PAGE_COUNT;
}
@Override
public Fragment getItem(int position) {
return PageFragment.newInstance(position + 1);
}
@Override
public CharSequence getPageTitle(int position) {
// Generate title based on item position
return tabTitles[position];
}}
Установка раздвижных Вкладки
Наконец, мы должны приложить наши ViewPager к SampleFragmentPagerAdapter, а затем настроить раздвижные вкладки с два этапа:
В OnCreate() метод вашей деятельности, найдите ViewPager и подключите адаптер.
Установите ViewPager на PagerSlidingTabStrip, чтобы подключить пейджер с вкладками.
public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Get the ViewPager and set it's PagerAdapter so that it can display items
ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
viewPager.setAdapter(new SampleFragmentPagerAdapter(getSupportFragmentManager()));
// Give the PagerSlidingTabStrip the ViewPager
PagerSlidingTabStrip tabsStrip = (PagerSlidingTabStrip) findViewById(R.id.tabs);
// Attach the view pager to the tab strip
tabsStrip.setViewPager(viewPager);
}}
И это результат
для получения дополнительной информации, проверьте следующее link
Good Luck
Спасибо за этот удивительный guide.But I проблема возникает в eclipse: в атрибуте отсутствует пространство имен Android pref ix для этой строки: tools: context = ". MainActivity" Как я могу это исправить? –
Не важно delete 'tools: context' :-) – mmlooloo
Хорошо, у меня есть еще один вопрос, вы можете попробовать использовать framelayout вместо relativelayout? Потому что я должен использовать framelayout. –