2016-08-17 6 views
1

私はTabLayoutに3つのタブを実装しました。すべてのページをスワイプするとうまくいく、それはタブのクリックだけを使ってナビゲートするときにも機能する。しかし、私がページをスワイプして以前に選択したタブのどれかをクリックすると、タブインジケータだけが新しいタブに変わりますが、テキストハイライトとページは変化しません。Android TabLayoutタブの問題点をクリックしてください。

TabLayoutのクリックリスナーを確認したところ、上記の状況では実行されていません。

詳細:

minSdk:16 
targetSdk:24 

私はTabSelectedListener 24.0.0および24.1.1

サポートライブラリを試してみました。

 tabs.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 
      tabPages.setCurrentItem(tab.getPosition()); 
     } 

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

     } 

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

     } 
    }); 

PagerAdapter

public class TabPageAdapter extends FragmentStatePagerAdapter { 
public TabPageAdapter(FragmentManager fm) { 
    super(fm); 
} 

@Override 
public Fragment getItem(int position) { 
    Fragment f1 = new Fragment1(); 
    Fragment f2 = new Fragment2(); 
    Fragment f3 = new Fragment3(); 

    switch (position) { 
     case 0: 
      return f1; 
     case 1: 
      return f2; 
     case 2: 
      return f3; 
    } 
    return null; 
} 


@Override 
public int getCount() { 
    return 3; 
} 

}

+0

@SangramHaladkarがtabSelectedListenerを追加しました。 –

+0

'PagerAdapter'コードを投稿しますか? – Bryan

+0

@ブライアンコードがあります –

答えて

1

あなたは完全にOnTabSelectedListenerを避けることができ、TabLayoutは、このためにconvenience methodを持っています

tabs.setupWithViewPager(tabPages); 
0
TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); 
     tabLayout.addTab(tabLayout.newTab().setText("Comparison")); 
     tabLayout.addTab(tabLayout.newTab().setText("Details")); 
     tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

     final ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 
     final PagerAdapter adapter = new PagerAdapter 
       (getSupportFragmentManager(), tabLayout.getTabCount()); 
     viewPager.setAdapter(adapter); 
     viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 
     tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
      @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) { 

      } 
     }); 

活動にこのコードを挿入します。 は

<android.support.design.widget.TabLayout 
     android:id="@+id/tab_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/colorM3signin" 
     app:tabSelectedTextColor="@color/com_facebook_button_background_color_pressed" 
     app:tabTextColor="@color/com_facebook_button_background_color_pressed" 
     android:elevation="6dp" 
     android:inputType="textCapCharacters" 
     app:tabTextAppearance="@android:style/TextAppearance.Widget.TabWidget" 
     app:tabIndicatorColor="@color/com_facebook_button_background_color_pressed" 
     app:tabIndicatorHeight="5dp" 
     android:minHeight="?attr/actionBarSize" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
     android:layout_below="@+id/toolbar" /> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="fill_parent" 
     android:layout_below="@id/tab_layout"/> 

活動xmlファイル内のコードの下にチェックこのPagerAdapeterクラスを追加します。

public class PagerAdapter extends FragmentStatePagerAdapter { 
    int mNumOfTabs; 

    public PagerAdapter(FragmentManager fm, int NumOfTabs) { 
     super(fm); 
     this.mNumOfTabs = NumOfTabs; 
    } 

    @Override 
    public Fragment getItem(int position) { 

     switch (position) { 
      case 0: 
       TabFragmentOne tab1 = new TabFragmentOne(); 
       return tab1; 
      case 1: 
       TabFragmentTwo tab2 = new TabFragmentTwo(); 
       return tab2; 

      default: 
       return null; 
     } 
    } 

    @Override 
    public int getCount() { 
     return mNumOfTabs; 
    } 
} 
+0

私はこれを既に持っています。 –

+0

http://www.androidhive.info/2015/09/android-material-design-working-with-tabs/このリンクを確認してください –

関連する問題