2016-04-27 10 views
0

色セレクタを実行しようとしています。タブを選択したときの色が白で、選択されていない場合は他の色です。この目標のために、私はsetColorFilterを使用します。しかし、タブアイコンの色は選択されたときに白く透明ではありません。イメージはImage Assetで追加され、カスタムカラー - ホワイトが選択されました。私はそれを白くする必要があります。任意のアイデアを理解し、任意のヘルプ。Androidタブのアイコンの色がクリアされていません

enter image description here


これは私のコード

private int[] tabIcons = { 
     R.drawable.ic_no, 
     R.drawable.busket, 
     R.drawable.ic_tab_aksia, 
     R.drawable.ic_tab_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; 

    } 

    @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.SRC_IN); 
     tabLayout.getTabAt(1).getIcon().setColorFilter(Color.parseColor("#F0F0F0"), PorterDuff.Mode.SRC_IN); 
     tabLayout.getTabAt(2).getIcon().setColorFilter(Color.parseColor("#F0F0F0"), PorterDuff.Mode.SRC_IN); 
     tabLayout.getTabAt(3).getIcon().setColorFilter(Color.parseColor("#F0F0F0"), PorterDuff.Mode.SRC_IN); 

     tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
      @Override 
      public void onTabSelected(TabLayout.Tab tab) { 
       tab.getIcon().setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_IN); 

      } 

      @Override 
      public void onTabUnselected(TabLayout.Tab tab) { 
       tab.getIcon().setColorFilter(Color.parseColor("#F0F0F0"), PorterDuff.Mode.SRC_IN); 
      } 

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

      } 
     }); 
public void setCurrentItem (int item, boolean smoothScroll) { 
     viewPager.setCurrentItem(item, smoothScroll); 
    } 
+0

ある ''このtab.getIconようなアイコンの描画可能に ')(変異させるメソッドを使用してみてください().mutate()。setColorFilter(Color.WHITE、PorterDuff.Mode.SRC_IN); '。これはおそらくあなたの問題を解決する可能性があります。 :) –

答えて

0

使用SlidingTabLayout

siliding_tabs.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() { 
    @Override 
    public int getIndicatorColor(int position) { 
     return getResources().getColor(R.color.white); 
    }    
}); 
+0

私は指示色にする必要はありません! –

+0

@ElamanAitymbetはこのようなテーマを追加します.http://stackoverflow.com/a/17453033 –

関連する問題