2017-01-21 21 views
0

私のアプリでは、各タブがアイコンとテキストの両方を持つtablayoutを実装しています。 タブを選択すると、アイコンとテキストを同じタブで選択し、 未選択のタブを別の色のテキストとアイコンで選択する必要があります。Android TabLayout(テキストとアイコン)選択したタブのテキストとアイコンの色を変更します。

以下は、タブレイアウトを実装するためのコードですが、タブの選択時にテキストの色とアイコンの色を変更することはできません。

private void setupTabIcons() { 

    TextView tabOne = (TextView) LayoutInflater.from(mContext).inflate(R.layout.custome_tab_with_icon, null); 
    tabOne.setText("Home"); 
    tabOne.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.selector_home, 0, 0); 
    tabLayout.getTabAt(0).setCustomView(tabOne); 

    TextView tabTwo = (TextView) LayoutInflater.from(mContext).inflate(R.layout.custome_tab_with_icon, null); 
    tabTwo.setText("Search"); 
    tabTwo.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.selector_search, 0, 0); 
    tabLayout.getTabAt(1).setCustomView(tabTwo); 

    TextView tabThree = (TextView) LayoutInflater.from(mContext).inflate(R.layout.custome_tab_with_icon, null); 
    tabThree.setText("WishList"); 
    tabThree.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.selector_wishlist, 0, 0); 
    tabLayout.getTabAt(2).setCustomView(tabThree); 

    TextView tabFour = (TextView) LayoutInflater.from(mContext).inflate(R.layout.custome_tab_with_icon, null); 
    tabFour.setText("Cart"); 
    tabFour.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.selector_cart, 0, 0); 
    tabLayout.getTabAt(3).setCustomView(tabFour); 

    TextView tabFive = (TextView) LayoutInflater.from(mContext).inflate(R.layout.custome_tab_with_icon, null); 
    tabFive.setText("Account"); 
    tabFive.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.selector_accounts, 0, 0); 
    tabLayout.getTabAt(4).setCustomView(tabFive); 

} 

タブが選択されている場合のテキストの色とアイコンの変更方法をお手伝いしてください。

あなたはTabLayout.OnTabSelectedListenerを追加することによって、それはあなたがアイコンとテキストの両方の色を変更するために使用できる3つの方法onTabSelected()onTabUnselected()onTabReselected()を、持っていることを行うことができますTIA

答えて

0

。これを参照できるのはlinkです。

0

テキストの色とアイコンの色合いはColor State List resourceです。私はandroid:state_selectedがうまくいくと思う。あなたのXMLで

0

切り替えタブのテキストの色 はTabLayoutにラインapp:tabTextColorapp:tabSelectedTextColorを追加します。あなたのfargment /アクティビティで

 <android.support.design.widget.TabLayout 
      android:layout_width="match_parent" 
      app:tabTextColor="#000000" 
      app:tabSelectedTextColor="#FFFFFF" 
      android:layout_height="wrap_content"/> 

切り替えタブのアイコン各タブにセレクタ描画可能を追加します。

 tabLayout = (TabLayout) findViewById(R.id.tab_layout); 
     //Set selector drawable to each tab 
     tabLayout.addTab(tabLayout.newTab().setText("Warm Up").setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.selector_warmup_icon,null))); 
     tabLayout.addTab(tabLayout.newTab().setText("Exercise").setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.selector_exercise_icon, null))); 
     tabLayout.addTab(tabLayout.newTab().setText("Rest").setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.selector_rest_icon, null))); 
     tabLayout.addTab(tabLayout.newTab().setText("Success").setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.selector_success_icon, null))); 

selector_warmup_icon.xml(のようにする必要があります)

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:drawable="@drawable/ic_human_white_48dp" android:state_selected="true"/> 
    <item android:drawable="@drawable/ic_human_grey600_24dp" android:state_selected="false"/> 

</selector> 
+0

何もtablayoutに表示されません。上記のコードを適用した後、タブバーは空白になりません。 – Ravi

+0

上記のコードは私のために働いています –

+0

タブの名前を与えるために.setText( "タブ名")を使用してください。更新されたコードを確認してくださいアイコンが表示される限りテキストが表示されますセレクタファイルを正しくチェックしてください –

関連する問題