2017-01-21 114 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); 

} 

請幫助如何選擇標籤時更改文本顏色和圖標。

TIA

回答

0

你可以通過添加一個TabLayout.OnTabSelectedListener,它有三個方法onTabSelected()onTabUnselected()onTabReselected(),你可以用它來改變這兩個圖標和文本的顏色。這裏的link你可以參考它。

0

切換標籤文字顏色 在XML加線app:tabTextColorapp:tabSelectedTextColor到TabLayout。

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

切換標籤圖標在你fargment /活動添加選擇可繪製的每個選項卡。

 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(「Tab name」)給出標籤名稱。現在檢查更新後的代碼文本將出現在圖標上正確檢查選擇器文件 –

相關問題