【问题标题】:How to create android navbar?如何创建安卓导航栏?
【发布时间】:2015-09-22 14:50:59
【问题描述】:

我已尝试使用 ViewPager 和 sliptablayout 遵循指南,但它们似乎不起作用或已被弃用。现在在 android 模板上创建选项卡的最佳方式是什么?

或者谁能给我一个简单清晰的解释的指南/教程?

【问题讨论】:

    标签: android templates layout tabs nav


    【解决方案1】:

    使用专门为此而设计的库可以非常轻松地创建选项卡:

    astuetz' PagerSlidingTabStrip

    将依赖项添加到您的应用(不是项目)的 build.gradle:

    dependencies {
        compile 'com.astuetz:pagerslidingtabstrip:1.0.1'
    }
    

    在您的布局 (XML) 中包含一个 PagerSlidingTabStrip 小部件,这通常放在它所代表的 ViewPager 上方:

    <com.astuetz.PagerSlidingTabStrip
    android:id="@+id/tabs"
    android:layout_width="match_parent"
    android:layout_height="48dip" />
    

    创建一个 ViewPager 适配器:

    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentManager;
    import android.support.v4.app.FragmentPagerAdapter;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * TabsPagerAdapter.
     *
     * @author Niels
     * @version 1.0
     * @since 11-9-2015
     */
    public class TabsPagerAdapter extends FragmentPagerAdapter {
    
        /**
         * Contains all the fragments.
         */
        private List<Fragment> fragments = new ArrayList<>();
    
        /**
         * Contains all the tab titles.
         */
        private List<String> tabTitles = new ArrayList<>();
    
        /**
         * Creates a new PagerAdapter instance.
         *
         * @param fragmentManager The FragmentManager.
         */
        public TabsPagerAdapter(FragmentManager fragmentManager) {
            super(fragmentManager);
        }
    
        @Override
        public int getCount() {
            return fragments.size();
        }
    
        @Override
        public Fragment getItem(int position) {
            return fragments.get(position);
        }
    
        @Override
        public CharSequence getPageTitle(int position) {
            return tabTitles.get(position);
        }
    
        /**
         * Adds the fragment to the list, also adds the fragment's tab title.
         *
         * @param fragment New instance of the Fragment to be associated with this tab.
         * @param tabTitle A String containing the tab title for this Fragment.
         */
        public void addFragment(Fragment fragment, String tabTitle) {
            fragments.add(fragment);
            tabTitles.add(tabTitle);
        }
    
    }
    

    最后,在您的活动的 onCreate 中:

        //adapter = view.findViewById(...)
        //viewpager = view.findViewById(...)
        adapter = new TabsPagerAdapter(getSupportFragmentManager());
        adapter.addFragment(new FragmentTab1() "Tab 1");
        adapter.addFragment(new FragmentTab2(), "Tab 2");
        adapter.addFragment(new FragmentTab3(), "Tab 3");
        adapter.addFragment(new FragmentTab4(), "Tab 4");
        viewpager.setAdapter(adapter);
        strip.setViewPager(viewpager);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多