我試圖做出一個棘手的佈局,我需要Android的默認選項卡指示器顏色。獲取Android默認選項卡指示器顏色
我已經搜索了很多,但每個地方我發現如何更改和自定義選項卡指示器,但無法找到如何獲得默認選項卡指示器的十六進制顏色代碼。
我試圖做出一個棘手的佈局,我需要Android的默認選項卡指示器顏色。獲取Android默認選項卡指示器顏色
我已經搜索了很多,但每個地方我發現如何更改和自定義選項卡指示器,但無法找到如何獲得默認選項卡指示器的十六進制顏色代碼。
我爲你的問題做了一些研究,我希望這會幫助你。
選項卡指示符顏色設置在類別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>
太好了,我會試試這個解決方案,並會告訴你它是否有效。 –
@AtifRehman你有機會嘗試這個嗎?我自己感興趣,如果這個工程:) –
我被困在提供更新我正在工作的應用程序,將盡快嘗試它。感謝您的回覆將很快讓您知道。 –
U的意思是,TabLayout from android.support.design.widget? –
我認爲你應該按照下面的網站:http://stackoverflow.com/questions/30904138/how-to-change-the-new-tablayout-indicator-color-and-height – Mrunal
是的設計小部件,你所指的鏈接顯示如何更改指示器的顏色,我不想這樣做,我想將顏色作爲十六進制值。 –