2016-04-07 27 views
3

Android'in varsayılan sekme gösterge rengine ihtiyacım olan zor bir düzen yapmaya çalışıyordum.Android varsayılan alın Sekme gösterge rengi

Çok fazla arama yaptım ancak her defasında sekme göstergesini nasıl değiştirebileceğimi ve özelleştirebileceğimi buldum, ancak varsayılan sekme göstergesinin onaltısında nasıl renk kodu bulacağımı bulamadım.

+0

Yani, tab.Tayout from android.support.design.widget ?? –

+0

Aşağıdaki siteyi izlemelisiniz: http://stackoverflow.com/questions/30904138/how-to-change-the-new-tablayout-indicator-color-and-height – Mrunal

+1

Evet, tasarım aracı, hak ettiğiniz bağlantı göstergenin rengini nasıl değiştireceğini gösterir, bunu yapmak istemiyorum, rengi onaltılık bir değer olarak almak istiyorum. –

cevap

1

Sorunuz için araştırma yaptım, umarım bu size yardımcı olacaktır.

Sekme gösterge rengi, TabLayout (Code) sınıfının İç Sınıf SlidingTabStrip numaralı satırında ayarlanır. Ne yazık ki bu değişkene erişemezsin.

private class SlidingTabStrip extends LinearLayout { 

    private final Paint mSelectedIndicatorPaint; 

    // ... 

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

Ama TabLayout varsayılan sekme göstergesi renk yapıcı içinde

ayarlanır.

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));  
} 

Ne istediğini elde etmek R.styleable.TabLayout_tabIndicatorColor erişmek gerektiğini düşünüyorum. Şu anda test etme şansım yok, ama nasıl işe yarayıp yaramadığını test ediyorum ama umarım bu size yardımcı olur.

Güncelleme evde denedim ve işe gibi görünüyor. Benim Faaliyet

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); 

arasında onCreate() yönteminde bu kodu kullanılan Ama R.styleable.TabLayout_tabIndicatorColor sadece accentColor bağlantılar oluşturduğunu gördü. Belki de istediğini elde etmenin en iyi yolu budur.

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

Harika, Bu çözümü deneyeceğim ve çalışıp çalışmadığını size söyleyeceğim. –

+0

@AtifRehman Bunu denemek için şansın var mı? Bu işe yararsa kendim ilgileniyorum :) –

+0

Çalıştığım bir uygulamanın güncellemesini vermemde sıkışmıştım, en kısa zamanda deneyeceğim. Cevabınız için teşekkürler çok yakında bilmenizi sağlayacaktır. –