如何使选项卡下的选择器滚动到所选选项卡?
How to make the selector under tabs to scroll to the selected tab?
我想将选择器(粉色线)滚动到下一个选项卡(on-fillup)。我的片段正在滚动,但选择器无法滚动。有人可以帮忙吗?
MainActivity.java
//Adding the tabs using addTab() method
tabLayout.addTab(tabLayout.newTab().setText("On Reserved"));
tabLayout.addTab(tabLayout.newTab().setText("On Fill-up"));
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
activity_main.java
<!-- our tablayout to display tabs -->
<android.support.design.widget.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>
<!-- View pager to swipe views -->
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="fill_parent"></android.support.v4.view.ViewPager>
试试这个解决方案
TabTextColor 设置选项卡标题的颜色,在这里传递一个 ColorStateList 使选项卡在不同情况下更改颜色,例如选中、活动、非活动等。TabIndicatorColor 设置选项卡下方指示器的颜色。
tabLayout.setTabTextColors(ContextCompat.getColorStateList(this, R.drawable.tab_selector));
tabLayout.setSelectedTabIndicatorColor(ContextCompat.getColor(this, R.color.indicator));
希望这对你有用。
PagerAdapter pagerAdapter = new PagerAdapter(getChildFragmentManager());
viewPager.setAdapter(pagerAdapter);
tabLayout.setupWithViewPager(mBinder.viewPager);//This line is important to make tab scrollable with viewpager and it should be after set adapter to viewpager
你必须像下面的代码一样在 viewpager
中分配 tablayout
// listener for tablayout when you select tab for change view
tabLayout.setOnTabSelectedListener(this);
// assign tablayout in viewpager
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
这是当您点击选项卡然后 viewpager
被更改时的覆盖方法
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
当您没有为 tablayout 设置 viewpager 时会出现此问题,反之亦然。因此,请在您的代码中添加以下行...
PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager(), nooftabs);
viewpager.setAdapter(pagerAdapter);
tabLayout.setupWithViewPager(viewpager, true);
希望对您有所帮助
我想将选择器(粉色线)滚动到下一个选项卡(on-fillup)。我的片段正在滚动,但选择器无法滚动。有人可以帮忙吗?
MainActivity.java
//Adding the tabs using addTab() method
tabLayout.addTab(tabLayout.newTab().setText("On Reserved"));
tabLayout.addTab(tabLayout.newTab().setText("On Fill-up"));
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
activity_main.java
<!-- our tablayout to display tabs -->
<android.support.design.widget.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>
<!-- View pager to swipe views -->
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="fill_parent"></android.support.v4.view.ViewPager>
试试这个解决方案
TabTextColor 设置选项卡标题的颜色,在这里传递一个 ColorStateList 使选项卡在不同情况下更改颜色,例如选中、活动、非活动等。TabIndicatorColor 设置选项卡下方指示器的颜色。
tabLayout.setTabTextColors(ContextCompat.getColorStateList(this, R.drawable.tab_selector));
tabLayout.setSelectedTabIndicatorColor(ContextCompat.getColor(this, R.color.indicator));
希望这对你有用。
PagerAdapter pagerAdapter = new PagerAdapter(getChildFragmentManager());
viewPager.setAdapter(pagerAdapter);
tabLayout.setupWithViewPager(mBinder.viewPager);//This line is important to make tab scrollable with viewpager and it should be after set adapter to viewpager
你必须像下面的代码一样在 viewpager
中分配 tablayout
// listener for tablayout when you select tab for change view
tabLayout.setOnTabSelectedListener(this);
// assign tablayout in viewpager
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
这是当您点击选项卡然后 viewpager
被更改时的覆盖方法
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
当您没有为 tablayout 设置 viewpager 时会出现此问题,反之亦然。因此,请在您的代码中添加以下行...
PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager(), nooftabs);
viewpager.setAdapter(pagerAdapter);
tabLayout.setupWithViewPager(viewpager, true);
希望对您有所帮助