Eug*_*e H 5 android android-tabs android-design-library
编辑最新的设计库解决了这个问题
编译'com.android.support:design:+'
我与工作TabLayout在两种情况下,PagerAdapter和FragmentStatePagerAdapter.在这两种情况下,当在页面之间滑动时,选项卡指示器会弹跳.单击选项卡以更改页面时,选项卡指示器不会反弹.
我不确定这是否是我的错误,这是一个已知问题,或指南的一部分.如果您需要更多代码,或者我将发布其他示例.
FragmentStatePagerAdapter
mViewPager.setAdapter(new FragmentStatePagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int position) {
LogMeal log = mLogMealAdapter.getItem(position);
return MealViewFragment.newInstance(log.getId());
}
@Override
public CharSequence getPageTitle(int position) { // Tab text
LogMeal logMeal1 = mLogMealAdapter.getItem(position);
String s;
if (logMeal1.getMealName().toString().trim().length() > 12) {
s = logMeal1.getMealName().substring(0, 12) + "..";
} else {
s = logMeal1.getMealName();
}
return s;
}
@Override
public int getCount() {
return mLogMealAdapter.getCount();
}
});
tabs.setTabTextColors(Color.parseColor("#80ffffff"), Color.parseColor("#ffffff"));
if (mLogMealAdapter.getCount() == 1) {
tabs.setTabMode(TabLayout.MODE_FIXED);
} else {
tabs.setTabMode(TabLayout.MODE_SCROLLABLE);
}
tabs.setupWithViewPager(mViewPager);
mViewPager.setCurrentItem(position);
Run Code Online (Sandbox Code Playgroud)
XML
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar_meal_view"
android:layout_width="match_parent"
android:layout_height="56dp"
android:background="@color/primary"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_below="@+id/toolbar_meal_view"
android:background="@color/primary"
android:theme="@style/ToolbarTheme"/>
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/tabs"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_below="@+id/tabs"
android:background="@drawable/toolbar_shadow"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
我最近遇到了类似的问题.
我的解决方法:
1)变更tabs.setupWithViewPager(mViewPager);为
\\ use own OnPageChangeListener
mViewPager.addOnPageChangeListener(new MyPageScrollListener(mTabLayout));
\\ Manually add tabs, for example:
mTabLayout.addTab(mTabLayout.newTab().setText(mViewPager.getAdapter().getPageTitle(0)));
mTabLayout.addTab(mTabLayout.newTab().setText(mViewPager.getAdapter().getPageTitle(1)));
\\ use own OnTabSelectedListener
mTabLayout.setOnTabSelectedListener(new MyOnTabSelectedListener());
Run Code Online (Sandbox Code Playgroud)
2)为自定义侦听器添加实现
private class MyPageScrollListener implements ViewPager.OnPageChangeListener {
private TabLayout mTabLayout;
public MyPageScrollListener(TabLayout tabLayout) {
this.mTabLayout = tabLayout;
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if(mTabLayout != null) {
mTabLayout.getTabAt(position).select();
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
}
private class MyOnTabSelectedListener implements TabLayout.OnTabSelectedListener {
@Override
public void onTabSelected(TabLayout.Tab tab) {
int position = tab.getPosition();
if (mViewPager.getCurrentItem() != position) {
mViewPager.setCurrentItem(position, true);
}
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
}
Run Code Online (Sandbox Code Playgroud)
我希望它有所帮助.
| 归档时间: |
|
| 查看次数: |
2891 次 |
| 最近记录: |