美文网首页
TabView底部/顶部导航栏简单用法

TabView底部/顶部导航栏简单用法

作者: 番茄tomato | 来源:发表于2019-08-21 10:05 被阅读0次
效果图1
效果图2

第一步:导入TabView的design包

    implementation 'com.android.support:design:28.0.0'

第二步:在布局文件中添加viewpager和Tabview

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <android.support.v4.view.ViewPager
        android:id="@+id/main_viewPager"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />

    <android.support.design.widget.TabLayout
        android:id="@+id/main_tabLayout"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="#F7F7F7"
        app:tabIndicatorColor="#88E7FF"
        app:tabIndicatorHeight="2dp"
        app:tabTextColor="@color/black"
        app:tabSelectedTextColor="#88E7FF"
        app:tabMode="fixed"
        ></android.support.design.widget.TabLayout>


</LinearLayout>

第三步:建立Fragment(根据要显示的内容来建立)


Fragment

di'wu'b
第四步:在acyivity中建立viewpagerh和Tabview,Fragment对象
这里ButterKinfe出现了问题,导致这个为空对象,不得不再findviewbyid()

    @BindView(R.id.main_viewPager)//为什么这里是空对象?
    ViewPager viewPager;
    @BindView(R.id.main_tabLayout)
    TabLayout tabLayout;
    private NewsFragment newsFragment;
    private WeatherFragment weatherFragment;
    private MenuFragment menuFragment;

第五步:建立ViewPager适配器:MainTabAdapter

public class MainTabAdapter  extends FragmentPagerAdapter {
    private String[] mTitles=new String[]{"菜单","新闻","天气"};
    private List<Fragment> fragments;
    public MainTabAdapter(FragmentManager fm) {
        super(fm);

    }
    public void setFragments(List<Fragment> fragments){
        this.fragments=fragments;
    }

    @Override
    public Fragment getItem(int i) {
        if (i == 1) {
            return fragments.get(1);
            //fragment_order_all,fragment_order_confirm,fragment_order_pickup
        } else if (i == 2) {
            return fragments.get(2);
        } else {
            return fragments.get(0);}


    }

    @Override
    public int getCount() {
        return mTitles.length;
    }

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {//设置页面标题
        return mTitles[position];
    }
}

第六步:建立在activity中建立initFragment方法,并且在onCreat中调用:

  private void initFragment() {
        List<Fragment> fragments = new ArrayList<>();
        newsFragment = new NewsFragment();
        weatherFragment = new WeatherFragment();
        menuFragment = new MenuFragment();
        fragments.add(menuFragment);
        fragments.add(newsFragment);
        fragments.add(weatherFragment);
        MainTabAdapter mainTabAdapter = new MainTabAdapter(getSupportFragmentManager());
        mainTabAdapter.setFragments(fragments);
        viewPager=findViewById(R.id.main_viewPager);
        tabLayout=findViewById(R.id.main_tabLayout);
        viewPager.setOffscreenPageLimit(2);//加载全部页面
        viewPager.setAdapter(mainTabAdapter);
        tabLayout.setupWithViewPager(viewPager);
    }

相关文章

网友评论

      本文标题:TabView底部/顶部导航栏简单用法

      本文链接:https://www.haomeiwen.com/subject/vpnvsctx.html