2016-04-07 59 views
3

我試圖做出一個棘手的佈局,我需要Android的默認選項卡指示器顏色。獲取Android默認選項卡指示器顏色

我已經搜索了很多,但每個地方我發現如何更改和自定義選項卡指示器,但無法找到如何獲得默認選項卡指示器的十六進制顏色代碼。

+0

U的意思是,TabLayout from android.support.design.widget? –

+0

我認爲你應該按照下面的網站:http://stackoverflow.com/questions/30904138/how-to-change-the-new-tablayout-indicator-color-and-height – Mrunal

+1

是的設計小部件,你所指的鏈接顯示如何更改指示器的顏色,我不想這樣做,我想將顏色作爲十六進制值。 –

回答

1

我爲你的問題做了一些研究,我希望這會幫助你。

選項卡指示符顏色設置在類別TabLayout (Code)的內部類中。可悲的是你不能訪問這個變量。

private class SlidingTabStrip extends LinearLayout { 

    private final Paint mSelectedIndicatorPaint; 

    // ... 

    void setSelectedIndicatorColor(int color) { 
     if (mSelectedIndicatorPaint.getColor() != color) { 
      mSelectedIndicatorPaint.setColor(color); 
      ViewCompat.postInvalidateOnAnimation(this); 
     } 
    } 
} 

但在TabLayout的默認選項卡指示燈顏色的構造函數設置。

public TabLayout(Context context, AttributeSet attrs, int defStyleAttr) { 
    super(context, attrs, defStyleAttr); 

    // Add the TabStrip 
    mTabStrip = new SlidingTabStrip(context); 
    addView(mTabStrip, LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT); 
    TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.TabLayout, defStyleAttr, R.style.Widget_Design_TabLayout); 

    // <-- HERE 
    mTabStrip.setSelectedIndicatorColor(a.getColor(R.styleable.TabLayout_tabIndicatorColor, 0));  
} 

我認爲你需要訪問R.styleable.TabLayout_tabIndicatorColor得到你想要的東西。我現在沒有可能測試它是否以及如何工作,但我希望這可以幫助你一點。

更新

我嘗試這樣做在家裏,它似乎工作。我用這個代碼在我的活動

TypedArray a = getContext().obtainStyledAttributes(null, R.styleable.TabLayout, 0, R.style.Widget_Design_TabLayout); 
// returns -16738680 in my case which is the accentColor 
int color = a.getColor(R.styleable.TabLayout_tabIndicatorColor, 0); 

onCreate()方法,但我一看,那只是R.styleable.TabLayout_tabIndicatorColor鏈接到accentColor。也許這是更好的方式來獲得你想要的。

<style name="Base.Widget.Design.TabLayout" parent="android:Widget"> 
    <item name="tabIndicatorColor">?attr/colorAccent</item> 
    <!-- other items --> 
</style> 
+0

太好了,我會試試這個解決方案,並會告訴你它是否有效。 –

+0

@AtifRehman你有機會嘗試這個嗎?我自己感興趣,如果這個工程:) –

+0

我被困在提供更新我正在工作的應用程序,將盡快嘗試它。感謝您的回覆將很快讓您知道。 –

相關問題