我希望有两个选项卡来在不同的Fragment之间进行导航,以前我使用过老方法,但现在API 21已经弃用了所有的方法。我搜索了很多资料,但没有找到任何教程或示例。我尝试了Google的SlidingTabs示例,但它不适用于Eclipse,所以我不知道如何将其集成到我的应用程序中。有人可以帮助我吗?也许给我一个基本教程的链接?谢谢!
我希望有两个选项卡来在不同的Fragment之间进行导航,以前我使用过老方法,但现在API 21已经弃用了所有的方法。我搜索了很多资料,但没有找到任何教程或示例。我尝试了Google的SlidingTabs示例,但它不适用于Eclipse,所以我不知道如何将其集成到我的应用程序中。有人可以帮助我吗?也许给我一个基本教程的链接?谢谢!
只需在您的项目中导入这两个类:SlidingTabStrip和SlidingTabLayout,即可在应用程序中使用选项卡。您可以查看示例项目以了解如何使用它。
非常简单易用。首先将这两个类导入到您的项目中,并在xml布局(my_layout.xml)中添加SlidingTabLayout。如果您想要与ViewPager一起使用,我还添加了一个viewPager:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingRight="@dimen/activity_horizontal_margin"
tools:context="MyActivity">
<SlidingTabLayout
android:id="@+id/sliding_tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/my_pager" />
</LinearLayout>
public class MyActivity extends ActionBarActivity {
private SlidingTabLayout slidingTabLayout;
private ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_layout);
viewPager = (ViewPager) findViewById(R.id.my_pager);
viewPager.setAdapter(new MyAdapter(getSupportFragmentManager()));
slidingTabLayout = (SlidingTabLayout)findViewById(R.id.sliding_tabs);
slidingTabLayout.setViewPager(viewPager);
}
}
然后,您可以定义适配器,将其添加到SlidingTabLayout中。例如:
public static class MyAdapter extends FragmentPagerAdapter {
private static final int FRAGMENT_1 = 0;
private static final int FRAGMENT_2 = 1;
private static final int FRAGMENT_3 = 2;
public MyAdapter (FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
switch (i){
case FRAGMENT_1 : return new Fragment1();
case FRAGMENT_2 : return new Fragment2();
case FRAGMENT_3 : return new Fragment3();
}
return null;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position){
case FRAGMENT_1 : return "Fragment 1 Title";
case FRAGMENT_2 : return "Fragment 2 title";
case FRAGMENT_3 : return "Fragment 3 Title";
}
return super.getPageTitle(position);
}
@Override
public int getCount() {
return 3;
}
}
请查看this,它可能会对您有所帮助,这是一个非常出色的菜单,可用于浏览片段。
如果你说的是一个ViewPager
而不是一个NavigationDrawer
类型的东西,它在API-21上仍然可以正常工作。
查看IOSched应用程序代码以获取类似“Google Play”的ViewPager指示器。
编辑
是的,setNavigationMode
已被弃用为方法和UI/UX模式。
来自官方文档:
This method was deprecated in API level 21.
Action bar navigation modes are deprecated and not supported by inline toolbar action bars.
Consider using other common navigation patterns instead.
链接到常见导航模式。
编辑2
修复了iosched应用程序代码链接。
setNavigationMode
已被废弃作为一种方法和UI/UX模式。如果您正在寻找替代方法(未被废弃),请重新思考您的UI/UX,不要寻找未被废弃的setNavigationMode
方法,因为据我所知,它不存在。这就是为什么推荐使用 NavigationDrawers 和 ViewPagers。 - shkschneiderViewPager
和选项卡条,就像IOSched应用程序一样。 - shkschneider