2017-01-21 16 views
0

enter image description hereタイトルストリップではなく、自動的に次のタブにスクロールスワイプジェスチャー自動的1回のスワイプで次のタブに移動しない選択されたタブを示し

タイトルストリップの移動に従って移動していません。それに応じてスワイプジェスチャーに応じて動きます。たとえば、スワイプすると、小さなタブだけが同じタブを示していてもちょっと動きます。

ユーザーがナビゲーション・ドロワーからこのページをナビゲートする際に、タブ・レイアウトをフラグメントに実装したいとします。

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

フラグメントが空の場合、この現象は確認されています。したがって、それぞれのフラグメントにレイアウトを追加するだけで問題を解決できます。

関連する問題