2016-05-24 15 views
1

viewPagerが選択またはスワイプされているときにタブアイコンを強調表示しようとしています。このため私は'tabLayout.setOnTabSelectedListener()'を使用しています。しかし、タブをスワイプすると強調表示されませんが、タブを押すと、すべての作業が完璧になり、タブが強調表示されます。それはgradleバージョンと関連しているかもしれません。私は'classpath 'com.android.tools.build:gradle:2.1.0''を使用しています。これはアクティビティです:あなたはsetupWithViewPagerを呼び出すと、これは内部的にあなたのOnTabSelectedListenerを上書きし、setOnTabSelectedListener(new ViewPagerOnTabSelectedListener(viewPager));tabLayout.setOnTabSelectedListenerがスワイプされていない

private int[] tabIcons = { 
     R.drawable.tab_icon_home, 
     R.drawable.tab_icon_cart2, 
     R.drawable.tab_icon_aksia, 
     R.drawable.tab_icon_menu 
}; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_icon_tabs); 

    toolbar = (Toolbar) findViewById(R.id.toolbar); 
    toolbar.setTitleTextColor(Color.WHITE); 
    setSupportActionBar(toolbar); 

    frameLayout = (FrameLayout) findViewById(R.id.frameLayout); 

    adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
    viewPager = (ViewPager) findViewById(R.id.viewpager); 
    viewPager.setAdapter(adapter); 
    viewPager.addOnPageChangeListener(pageChangeListener); 
    viewPager.setOffscreenPageLimit(10); 
    tabLayout = (TabLayout) findViewById(R.id.tabs); 
    tabLayout.setupWithViewPager(viewPager); 
    setupTabIcons(); 

} 


private OnPageChangeListener pageChangeListener = new OnPageChangeListener() { 

    int currentPosition = 0; 

    @Override 
    public void onPageSelected(int newPosition) { 

      FragmentLifecycle fragmentToHide = (FragmentLifecycle) adapter.getItem(currentPosition); 
      fragmentToHide.onPauseFragment(); 

      FragmentLifecycle fragmentToShow = (FragmentLifecycle) adapter.getItem(newPosition); 
      fragmentToShow.onResumeFragment(); 

      currentPosition = newPosition; 
      adapter.notifyDataSetChanged(); 

    } 

    @Override 
    public void onPageScrolled(int arg0, float arg1, int arg2) { 

    } 

    public void onPageScrollStateChanged(int arg0) { } 
}; 

private void setupTabIcons() { 


    tabLayout.getTabAt(0).setIcon(tabIcons[0]); 
    tabLayout.getTabAt(1).setIcon(tabIcons[1]); 
    tabLayout.getTabAt(2).setIcon(tabIcons[2]); 
    tabLayout.getTabAt(3).setIcon(tabIcons[3]); 

    tabLayout.getTabAt(0).getIcon().setColorFilter(Color.WHITE, PorterDuff.Mode.MULTIPLY); 
    tabLayout.getTabAt(1).getIcon().setColorFilter(Color.parseColor("#81C784"), PorterDuff.Mode.SRC_IN); 
    tabLayout.getTabAt(2).getIcon().setColorFilter(Color.parseColor("#81C784"), PorterDuff.Mode.SRC_IN); 
    tabLayout.getTabAt(3).getIcon().setColorFilter(Color.parseColor("#81C784"), PorterDuff.Mode.SRC_IN); 



    tabLayout.setOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager) { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 
      super.onTabSelected(tab); 

       tab.getIcon().setColorFilter(Color.WHITE, PorterDuff.Mode.MULTIPLY); 


     } 

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

      tab.getIcon().setColorFilter(Color.parseColor("#81C784"), PorterDuff.Mode.MULTIPLY); 
     } 

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

     } 
    }); 


} 
+0

onPageSelectedのタブハイライトのコードを書いてください。 – Nisarg

+0

@ onisSelected()では動作しませんが、onPageUnSelected()を実装するにはどうすればよいですか? – eluuu

+0

あなただけに応じて、その位置とコードを使用して選択を解除するために実装する必要がいけない – Nisarg

答えて

0

呼び出します。

あなたがTabLayout.ViewPagerOnTabSelectedListenerを実施し、その後、onTabSelected()を上書きし、setupWithViewPager()setOnTabSelectedListener()を呼び出しています

これが正しいとタブがクリックされたとき、それはあなたがページをスクロールしたときに、それが動作していないことを言っている 、正常に動作しています。 onPageSelected()OnPageChangeListener()をご覧ください。このメソッドは、特定のPageが選択されたときに呼び出されるためです。

0

は...

tabLayout = ((TabLayout) findViewById(R.id.tabs)); 
adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
viewPager = (ViewPager) findViewById(R.id.viewpager); 
viewPager.setAdapter(adapter); 
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(
         tabLayout)); 
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
      public void onTabReselected(TabLayout.Tab paramAnonymousTab) { 
      } 

      public void onTabSelected(TabLayout.Tab paramAnonymousTab) { 
       viewPager.setCurrentItem(paramAnonymousTab.getPosition()); 
       tab.getIcon().setColorFilter(Color.WHITE, PorterDuff.Mode.MULTIPLY); 
      } 

      public void onTabUnselected(TabLayout.Tab paramAnonymousTab) { 
       tab.getIcon().setColorFilter(Color.parseColor("#81C784"), PorterDuff.Mode.MULTIPLY); 
      } 
}); 

tabLayout.getTabAt(0).setIcon(tabIcons[0]); 
tabLayout.getTabAt(1).setIcon(tabIcons[1]); 
tabLayout.getTabAt(2).setIcon(tabIcons[2]); 
tabLayout.getTabAt(3).setIcon(tabIcons[3]); 

tabLayout.getTabAt(0).getIcon().setColorFilter(Color.WHITE, PorterDuff.Mode.MULTIPLY); 
tabLayout.getTabAt(1).getIcon().setColorFilter(Color.parseColor("#81C784"), PorterDuff.Mode.SRC_IN); 
tabLayout.getTabAt(2).getIcon().setColorFilter(Color.parseColor("#81C784"), PorterDuff.Mode.SRC_IN); 
tabLayout.getTabAt(3).getIcon().setColorFilter(Color.parseColor("#81C784"), PorterDuff.Mode.SRC_IN); 

viewPager.setOffscreenPageLimit(4); 

ハッピーコーディングをこの方法を試してみてください。

+0

それは動作しません – eluuu

+0

あなたはそれに直面している問題は? –

+0

あなたが言ったように私はやったが、何も起こらなかった。問題は、異なる方法であなたを導き、知っている新しい、これを知らなかったために私を許し代わり – eluuu

1

私はGradleの中で、私は

dependencies { 
    compile 'com.android.support:appcompat-v7:23.0.0' 
    compile 'com.android.support:design:23.0.0' } 

を使用し、私はAPPCOMPAT-V7とデザインの両方で23.0.1に23.0.0から変更して、解決策を見つけました。今はすべて私のために働く。

+0

をaddOnTabSelectedListenerを使用し、 – Nisarg

+0

@Nisargはお時間をありがとうございました – eluuu

関連する問題