Ihre Layout-Datei wird Registerkarten am oberen Rand haben und einen ViewPager am Boden wie in der unten stehenden Code-Schnipsel gezeigt:
<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" />
erstellen Fragment
Fragment erstellen [re s/Layout/fragment_page.xml] und kopieren und fügen Sie diesen Code
<TextView
android:id="@+id/tvTitle"
android:text="Fragment #X"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" />
In PageFragment.java die Inflation Logik für das Fragment Abschnitt der Registerkarte Inhalt definieren:
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;
}
Implement FragmentPagerAdapter
Das nächste, was zu tun ist, um den Adapter für Ihre ViewPager zu implementieren, die die Reihenfolge der Registerkarte steuert.
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];
}}
Setup-Schiebe Tabs
Schließlich müssen wir unsere ViewPager zum SampleFragmentPagerAdapter befestigen und dann konfigurieren, um die Schiebezungen mit einem zweistufigen Verfahren:
Im onCreate() Methode suchen Sie den ViewPager und verbinden Sie den Adapter.
Legen Sie den ViewPager auf dem PagerSlidingTabStrip fest, um den Pager mit den Registerkarten zu verbinden.
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);
}}
Und das ist das Ergebnis
für weitere Informationen besuchen Sie die folgende link
Good Luck
Vielen Dank für dieses tolle guide.But I Habe ein Problem dieses Problem in Eclipse: Attribut fehlt der Android Namespace Pref ix für diese Zeile: tools: context = ". MainActivity" Wie kann ich das beheben? –
es ist nicht wichtig delete 'tools: context' :-) – mmlooloo
Okay, ich habe noch eine Frage können Sie versuchen, framelayout anstatt relaylayout verwenden? Weil ich Framelayout benutzen muss. –