API 21滑动标签活动

时间:2014-12-02 17:37:22

标签: android eclipse android-tabs

我希望有两个标签可以在Fragments之间导航,我使用旧方法完成,但现在使用API​​ 21,所有方法都不推荐使用。我搜索了很多,但我没有找到任何教程或样本。我尝试了谷歌的SlidingTabs样本,但它不是为Eclipse构建的,所以我不知道如何将它集成到我的应用程序中。有人能帮我吗?也许给我一个基本教程的链接?谢谢!

3 个答案:

答案 0 :(得分:1)

检查this,它可能对您有帮助,它是一个非常完善的菜单,用于浏览片段

答案 1 :(得分:1)

只需在项目中导入这两个类:SlidingTabStripSlidingTabLayout,即可在应用程序中添加标签。您可以查看示例项目以了解它的使用方式。

使用起来非常简单。首先在项目和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;
    }
}

答案 2 :(得分:0)

如果它是您所说的ViewPager而不是NavigationDrawer类型的东西,它继续在API-21上运行良好。

请查看IOSched application's code以查看“Google Play”,例如ViewPager指示符。

修改

setNavigationMode作为方法和UI / UX模式被弃用。

来自the official documentation

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.

指向common navigation patterns的链接。

<强> EDIT2

修复了iosched应​​用程序代码链接。