在编程支持TabLayout库设置选项卡指示器位置 [英] Set tab indicator position programatically in TabLayout support library

查看:1701
本文介绍了在编程支持TabLayout库设置选项卡指示器位置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的应用我使用TabLayout从支持库视图pager.I有3个片段it.Suppose我在弗拉加其中有一个按钮,点击就带我到fragB.I我成功地将fragB,但唯一的问题是选项卡指示器保持在弗拉加。

code

 私人无效setupTablayout(){
        tabLayout =(TabLayout)findViewById(R.id.tabLayout);
        tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
        tabLayout.setupWithViewPager(viewPager);
        viewPager.setCurrentItem(1,真);        tabLayout.getTabAt(0).setIcon(R.drawable.archive).setText();
        tabLayout.getTabAt(1).setIcon(R.drawable.status_1).setText();
        tabLayout.getTabAt(2).setIcon(R.drawable.settings).setText();        tvHeader.setText(STATUS);        tabLayout.setOnTabSelectedListener(本);
        //tabLayout.setOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager));
    }    @覆盖
    公共无效onTabSelected(TabLayout.Tab标签){        viewPager.setCurrentItem(tab.getPosition());
        开关(tab.getPosition()){
            情况下0:                tab.setIcon(R.drawable.archive_1).setText();
                tvHeader.setText(档案);
                tvDate.setVisibility(View.GONE);
                ivRefresh.setVisibility(View.VISIBLE);                打破;
            情况1:
                tab.setIcon(R.drawable.status_1).setText();
                tvHeader.setText(STATUS);
                tvDate.setVisibility(View.VISIBLE);
                ivRefresh.setVisibility(View.VISIBLE);
                打破;
            案例2:
                tab.setIcon(R.drawable.settings_1).setText();
                tvHeader.setText(设置);
                tvDate.setVisibility(View.GONE);
                ivRefresh.setVisibility(View.GONE);
                打破;
        }
    }    @覆盖
    公共无效onTabUnselected(TabLayout.Tab标签){
        viewPager.setCurrentItem(tab.getPosition());
        开关(tab.getPosition()){
            情况下0:                tab.setIcon(R.drawable.archive).setText();                打破;
            情况1:
                tab.setIcon(R.drawable.status).setText();
                打破;
            案例2:
                tab.setIcon(R.drawable.settings).setText();
                打破;
        }    }
    @覆盖
    公共无效onTabReselected(TabLayout.Tab标签){        viewPager.setCurrentItem(tab.getPosition());
        开关(tab.getPosition()){
            情况下0:                tab.setIcon(R.drawable.archive).setText();                打破;
            情况1:
                tab.setIcon(R.drawable.status).setText();                打破;
            案例2:
                tab.setIcon(R.drawable.settings).setText();
                打破;
        }    }    类MyPagerAdapter扩展FragmentPagerAdapter {
        公共MyPagerAdapter(FragmentManager经理){
            超(经理);
        }        @覆盖
        公共片段的getItem(INT位置){            片段片段= NULL;            开关(位置){
                情况下0:// tabLayout.getTabAt(0).setIcon(R.drawable.archive_1).setText();
// tabLayout.getTabAt(1).setIcon(R.drawable.status).setText();
// tabLayout.getTabAt(2).setIcon(R.drawable.settings).setText();
                    片段=新ArchivesFrag();
                    打破;
                情况1:
// tabLayout.getTabAt(0).setIcon(R.drawable.archive).setText();
// tabLayout.getTabAt(1).setIcon(R.drawable.status_1).setText();
// tabLayout.getTabAt(2).setIcon(R.drawable.settings).setText();
                    片段= StatusFrag.newInstance(listPosition);                    打破;
                案例2:
// tabLayout.getTabAt(0).setIcon(R.drawable.archive).setText();
// tabLayout.getTabAt(1).setIcon(R.drawable.status).setText();
// tabLayout.getTabAt(2).setIcon(R.drawable.settings_1).setText();
                    片段=新SettingFrag();                    打破;
            }
            返回片段;
        }        @覆盖
        公众诠释的getCount(){
            返回3;
        }
    }

弗拉加

  {        ((首页)getActivity())getArchiveList();
    }


解决方案

而不是

  viewPager.setCurrentItem(tab.getPosition());

您可以使用,

  tab.select();

In my application i am using TabLayout from support library with view pager.I have 3 fragments in it.Suppose i am in fragA which has a button which on clicked takes me to fragB.I am sucessfully going to fragB but only problem is that the tab indicator remains at fragA.

Code

 private void setupTablayout() {


        tabLayout = (TabLayout) findViewById(R.id.tabLayout);
        tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
        tabLayout.setupWithViewPager(viewPager);
        viewPager.setCurrentItem(1, true);

        tabLayout.getTabAt(0).setIcon(R.drawable.archive).setText("");
        tabLayout.getTabAt(1).setIcon(R.drawable.status_1).setText("");
        tabLayout.getTabAt(2).setIcon(R.drawable.settings).setText("");

        tvHeader.setText("STATUS");

        tabLayout.setOnTabSelectedListener(this);
        //tabLayout.setOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager));


    }

    @Override
    public void onTabSelected(TabLayout.Tab tab) {

        viewPager.setCurrentItem(tab.getPosition());
        switch (tab.getPosition()) {
            case 0:

                tab.setIcon(R.drawable.archive_1).setText("");
                tvHeader.setText("ARCHIVES");
                tvDate.setVisibility(View.GONE);
                ivRefresh.setVisibility(View.VISIBLE);

                break;
            case 1:
                tab.setIcon(R.drawable.status_1).setText("");
                tvHeader.setText("STATUS");
                tvDate.setVisibility(View.VISIBLE);
                ivRefresh.setVisibility(View.VISIBLE);
                break;
            case 2:
                tab.setIcon(R.drawable.settings_1).setText("");
                tvHeader.setText("SETTINGS");
                tvDate.setVisibility(View.GONE);
                ivRefresh.setVisibility(View.GONE);
                break;


        }
    }

    @Override
    public void onTabUnselected(TabLayout.Tab tab) {


        viewPager.setCurrentItem(tab.getPosition());
        switch (tab.getPosition()) {
            case 0:

                tab.setIcon(R.drawable.archive).setText("");

                break;
            case 1:
                tab.setIcon(R.drawable.status).setText("");
                break;
            case 2:
                tab.setIcon(R.drawable.settings).setText("");
                break;


        }

    }


    @Override
    public void onTabReselected(TabLayout.Tab tab) {

        viewPager.setCurrentItem(tab.getPosition());
        switch (tab.getPosition()) {
            case 0:

                tab.setIcon(R.drawable.archive).setText("");

                break;
            case 1:
                tab.setIcon(R.drawable.status).setText("");

                break;
            case 2:
                tab.setIcon(R.drawable.settings).setText("");
                break;


        }

    }

    class MyPagerAdapter extends FragmentPagerAdapter {


        public MyPagerAdapter(FragmentManager manager) {
            super(manager);
        }

        @Override
        public Fragment getItem(int position) {

            Fragment fragment = null;

            switch (position) {
                case 0:

//                    tabLayout.getTabAt(0).setIcon(R.drawable.archive_1).setText("");
//                    tabLayout.getTabAt(1).setIcon(R.drawable.status).setText("");
//                    tabLayout.getTabAt(2).setIcon(R.drawable.settings).setText("");
                    fragment = new ArchivesFrag();


                    break;
                case 1:
//                    tabLayout.getTabAt(0).setIcon(R.drawable.archive).setText("");
//                    tabLayout.getTabAt(1).setIcon(R.drawable.status_1).setText("");
//                    tabLayout.getTabAt(2).setIcon(R.drawable.settings).setText("");
                    fragment = StatusFrag.newInstance(listPosition);

                    break;
                case 2:
//                    tabLayout.getTabAt(0).setIcon(R.drawable.archive).setText("");
//                    tabLayout.getTabAt(1).setIcon(R.drawable.status).setText("");
//                    tabLayout.getTabAt(2).setIcon(R.drawable.settings_1).setText("");
                    fragment = new SettingFrag();

                    break;


            }
            return fragment;
        }

        @Override
        public int getCount() {
            return 3;
        }


    }

FragA

{

        ((Home) getActivity()).getArchiveList();
    }

解决方案

Instead of

viewPager.setCurrentItem(tab.getPosition());

You can use,

tab.select();

这篇关于在编程支持TabLayout库设置选项卡指示器位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆