0
@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); 
     tabLayout.addTab(tabLayout.newTab().setText("All Calculators")); 
     tabLayout.addTab(tabLayout.newTab().setText("My Calculators")); 
     tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

     final ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 
     final PagerAdapter adapter = new PagerAdapter 
       (getSupportFragmentManager(), tabLayout.getTabCount()); 
     viewPager.setAdapter(adapter); 

     viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 

//  tabLayout.setSelectedTabIndicatorColor(Color.parseColor("#71CDF5")); 

     tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
      @Override 
      public void onTabSelected(TabLayout.Tab tab) { 
       viewPager.setCurrentItem(tab.getPosition()); 
      } 

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

      } 

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

      } 
     }); 
//does not change the tab's title color when selected 
     tabLayout.setSelectedTabIndicatorColor(Color.parseColor("#71CDF5")); 
    } 

我在做什麼錯?tabLayout.setSelectedTabIndicatorColor(int color)not working

回答

0

我確實找到了解決此問題的解決方法。 在styles.xml中我添加了下面的代碼。

<style name="AppTheme.TabStyle" parent="Widget.Design.TabLayout"> 
     <item name="tabTextAppearance">@style/AppTheme.TextStyle</item> 
     <item name="tabTextColor">#000000</item> 
     <item name="tabSelectedTextColor">#71CDF5</item> 
     <!--<item name="tabIndicatorColor">@color/primaryDark</item>--> 
     <!--<item name="tabIndicatorHeight">3dp</item>--> 
     <!--<item name="android:background">?attr/colorPrimary</item>--> 
    </style> 

    <style name="AppTheme.TextStyle" parent="TextAppearance.Design.Tab"> 
     <item name="android:textSize">14sp</item> 
     <item name="textAllCaps">false</item> 
    </style> 

,然後在我的標籤佈局我加入了風格

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.TabLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="#3B4245" 
    style="@style/AppTheme.TabStyle" 
    android:elevation="6dp"> 

</android.support.design.widget.TabLayout> 

事情就這樣成了。我沒有從主類中刪除下面的代碼

tabLayout.setSelectedTabIndicatorColor(Color.parseColor("#71CDF5")); 

也許有更好的方法來解決這個問題,我不知道這是實現這一目標的具體方式。

+0

對我來說,它通過用戶界面選擇一個選項卡(錄製在選項卡上),但調用viewPager.setCurrentItem(...)移動指標但不更新文本顏色。我正在使用設計庫23.1.0。我不知道這是否是圖書館的一個bug – jfcartier

+0

@jfcartier我沒有嘗試用戶界面,但如果它是一個圖書館的問題,很多人都會遇到同樣的問題,但在這裏似乎並不是這樣。如果你確實發現,請分享你的知識:) – Swapnil

+0

我也面臨着@jfcartier提到的同樣的問題。 viewPager.setCurrentItem()不更改Tab指示符顏色,但不更改文本顏色。我也在使用支持庫。任何人都找到了解決方案? – karthikk

0

我也在嘗試相同的方式,最後提供了一個解決方案。我嘗試了所有,最後我嘗試了下面的解決方案,它對我來說很有魅力。

viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
      @Override 
      public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 

      } 

      @Override 
      public void onPageSelected(int position) { 
       tabLayout.getTabAt(position).select(); 

      } 

      @Override 
      public void onPageScrollStateChanged(int state) { 

      } 
     });