2017-01-21 3 views
0

enter image description hereЗаголовок полосы прокрутки не к следующей вкладке автоматически вместо перемещения в соответствии с движением салфетки жест

Заголовок полосы, которая указывает на выбранную вкладку автоматически не перейти на следующую вкладку на одной салфетки. Он перемещается в соответствии с жестом салфетки, например, если вы проведете только небольшую полоску, она будет двигаться немного, даже если она указывает ту же вкладку.

Я хочу реализовать компоновку вкладок во фрагменте, поскольку пользователь будет перемещаться по этой странице с навигационного ящика.

Xml код

<android.support.design.widget.CoordinatorLayout 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.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/aboutTabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:tabMode="fixed" 
     app:tabGravity="fill"/> 

</android.support.design.widget.AppBarLayout> 

<android.support.v4.view.ViewPager 
    android:id="@+id/aboutViewPager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

код хостинг XML-

public class AboutFragment extends Fragment{ 

    @BindView(R.id.aboutTabs) 
    public TabLayout tabLayout; 
    @BindView(R.id.aboutViewPager) 
    public ViewPager viewPager; 

    private View rootView; 

    /** 
    * Mandatory empty constructor for the fragment manager to instantiate the 
    * fragment (e.g. upon screen orientation changes). 
    */ 
    public AboutFragment() { 
    } 

    public static Fragment newInstance() { 
     Fragment fragment = new AboutFragment(); 
     return fragment; 
    } 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     rootView = inflater.inflate(R.layout.fragment_about, container, false); 

     ButterKnife.bind(this, rootView); 

     setupViewPager(viewPager); 
     tabLayout.setupWithViewPager(viewPager); 

     return rootView; 
    } 

    private void setupViewPager(ViewPager viewPager) { 
     AboutPagerAdapter adapter = new AboutPagerAdapter(getChildFragmentManager()); 
     adapter.addFragment(new AboutUsFragment(), getResources().getString(R.string.str_about_us)); 
     adapter.addFragment(new MissionFragment(), getResources().getString(R.string.str_about_mission)); 
     adapter.addFragment(new ValuesFragment(), getResources().getString(R.string.str_about_values)); 
     viewPager.setAdapter(adapter); 
    } 

} 

адаптер

public class AboutPagerAdapter extends FragmentPagerAdapter { 

    private final List<Fragment> mFragmentList = new ArrayList<>(); 
    private final List<String> mFragmentTitleList = new ArrayList<>(); 

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

    public void addFragment(Fragment fragment, String title) { 
     mFragmentList.add(fragment); 
     mFragmentTitleList.add(title); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return mFragmentList.get(position); 
    } 

    @Override 
    public int getCount() { 
     return mFragmentList.size(); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return mFragmentTitleList.get(position); 
    } 
} 

Что является причиной этой проблемы? Где я ошибаюсь? Заранее спасибо

ответ

0

Если фрагменты пусты, это поведение наблюдается. Поэтому просто добавьте свои макеты в соответствующие фрагменты, и это решит проблему.

Смежные вопросы