当我在片段之间滑动时,tabindicator不会在tablayout中从一个选项卡滑动到另一个选项卡。字体的突出显示也没有改变

时间:2016-03-15 17:06:35

标签: android tabs android-tablayout

div

当我浏览片段时,标签的高光不会改变,但是当我触摸标签时它工作正常。当我触摸它们时,标签指示器从左向右滑动很好,标签的字体颜色也会突出显示。 我认为问题在于这段代码

map.on('popupopen', function (e) {
    console.log(e.popup._source); // Layer instance
    console.log(e.popup._source.feature); // Layer's feature 
    console.log(e.popup._contentNode); // Popup content element

    // Do highchart stuff with your element and feature data.
});

我该怎么做才能突出显示当前标签...

5 个答案:

答案 0 :(得分:13)

我找到了解决方案。

tabLayout.setupWithViewPager(pager);

这种方法很容易设置一切。

答案 1 :(得分:2)

只是另外一点。

最好的办法是最后致电tabLayout.setupWithViewPager(viewPager)

至少,在您致电viewPager.clearOnPageChangeListeners()后不要立即致电viewPager.setOnPageChangeListener()tabLayout.setupWithViewPager(viewPager),因为这会删除TabLayout在滚动ViewPager时使用的监听器

答案 2 :(得分:1)

您不应该在tablayout上添加Tab(),因为您已经设置了一个视图寻呼机适配器

执行以下操作,它应该可以正常工作

public class LoginRegister extends AppCompatActivity implements SignUpFragment.OnFragmentInteractionListener ,SignInFragment.OnFragmentInteractionListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login_register);

    final SigninPagerAdapter adapter = new SigninPagerAdapter(getSupportFragmentManager());

    final ViewPager pager = (ViewPager) findViewById(R.id.loginpager);
    pager.setAdapter(adapter);

    final TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout_signup);
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
    tabLayout.setupWithViewPager(pager);

    }
}

SignInPagerAdapter

public class SigninPagerAdapter extends FragmentStatePagerAdapter {

    public SectionsPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {

        switch (position) {
        case 0: 
            return SingnUpFragment.newInstance()
        case 1: 
            return SignInFragment.newInstance()
        default:
            return null;
        }
    }

    @Override
    public int getCount() {
        //return the number of tabs you want in your tabLayout
        return 2;
    }


    @Override
    public CharSequence getPageTitle(int position) {
        //this is where you set the titles
        switch(position) {
            case 0: 
                return "Sign Up";
            case 1:
                return "Sign In";
        }
        return null;
    }

答案 3 :(得分:0)

更改所选和未选定标签的颜色。在LoginRegister.java文件中使用以下代码:

//tabLayout.setTabTextColors(unselectedTabColor, selectedTabColor)
        tabLayout.setTabTextColors(Color.parseColor("#627179"), Color.parseColor("#BF4A32"));

答案 4 :(得分:-1)

尝试在yout代码中添加:

 mTabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {

            //THIS!!
            if (mViewPager != null) {
                mViewPager.setCurrentItem(tab.getPosition());

            }
        }

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

        }

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

        }
    });

它解决了我的问题。