2017-09-07 40 views
2

アイコンボタン付きのメニューにTabLayoutを使用しています。 アイコンをXMLで描画可能なものに色分けすることはできますか?Androidスタジオ:TabItem内のアイコンに色合いを設定する

android:tintはTabItem要素では機能しません。あなたは一つの方法があるXMLによって色合いを設定したい場合は、一部のコーディングそれを行うことができます

答えて

3

、この

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


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

     } 

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

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

     } 
    }); 
} 
+0

setOnTabSelectedListenerに動作します。代わりに "addOnTabSelectedListener"を使用しました。 –

+1

cool。うまくいけば私はそれに気付かなかった。あなたを助けてうれしい –

1

を試してみてください。

custom_tabレイアウトがある
<android.support.design.widget.TabItem 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:icon="@drawable/ic_drawable" 
     android:layout="@layout/custom_tab" /> 

:あなたはhere見つけることができるTintableImageView

<?xml version="1.0" encoding="utf-8"?> 
<com.view.TintableImageView 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     android:id="@android:id/icon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     app:tint_color="@color/red" /> 

ソース属性android:layoutを介して設定されてTabItem用のカスタムレイアウトがあります。あなたは、別のセレクタ状態に異なるアイコンの色を使用するだけでカラーセレクタファイルを作成し、色合いの色として設定したい場合は

このアプローチは、あなたに柔軟性を与え、それが推奨されていません()

app:tint_color="@color/selector_tab" 
関連する問題