【问题标题】:What's the difference between various Android tab navigation methods各种Android标签导航方式有什么区别
【发布时间】:2015-12-11 13:56:07
【问题描述】:

我开始写一个安卓应用,想要一个标签导航界面。似乎有多种选择,其中一些可能已被弃用:

  • Android TabHost(已弃用?但仍可在 Android Studio 中使用)
  • 带有可滑动视图的选项卡布局
  • Android 选项卡活动
  • 带标签的材料设计

什么是最好的选择?带有标签的材料设计?支持 API 的时间有多远?

我知道这不是一个纯粹的编码问题,但它可能是其他人也在思考的问题。

谢谢

【问题讨论】:

    标签: android tabs navigation material-design


    【解决方案1】:

    将您的 MainActivity 扩展至 AppCompatActivity,它将持续到 android 版本 7, http://developer.android.com/reference/android/support/v7/app/AppCompatActivity.html

    使用 tabLayout 和 View Pagers,在标签上获得滑动效果

    activity_main.xml

    将以下内容添加到您的 MainActivity 布局文件中。

    <android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >
    </android.support.design.widget.TabLayout>
    <android.support.v4.view.ViewPager
        android:id="@+id/vp_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbars="vertical"
        android:visibility="visible">
    </android.support.v4.view.ViewPager>
    

    MainActivity.java

    public class MainActivity extends AppCompatActivity{
      ViewPager viewPager;
      FragmentPagerAdapter ft;
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_viewpaggermain);
    
        viewPager = (ViewPager) findViewById(R.id.vp_main);
        ft = new FragmentPagerAdapter(getSupportFragmentManager()) {
            String [] titles = {"Subscriber","Merchant"};
            final int VIEW_COUNT = 2;
            @Override
            public Fragment getItem(int position) {
                switch (position){
                    case 0:
                        return new YourFirstFragment();
                    case 1:
                        return new YourSecondFragment();
                }
                return null;
            }
    
            @Override
            public int getCount() {
                return VIEW_COUNT;
            }
    
            @Override
            public CharSequence getPageTitle(int position) {
                return titles[position];
            }
        };
    
        TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
        viewPager.setAdapter(ft);
        tabLayout.setupWithViewPager(viewPager);
      }
    }
    

    【讨论】:

    • 感谢 asadnwfp,但我不确定这是否能回答我关于当前首选方法和 API 的问题。这是 API 23 的当前标准吗?
    • @Jazzmine AppCompat 用于向后兼容,用法取决于您的应用程序的用户,可能,.. 虽然它不是标准。
    猜你喜欢
    • 1970-01-01
    • 2011-03-08
    • 2010-11-04
    • 1970-01-01
    • 2011-05-24
    • 2015-03-25
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多