2015-07-26 17 views
58

Bu ana faaliyetiTabLayout kullanırken bir sekme arka plan rengini nasıl değiştiririm?

public class FilterActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_filter); 

    // Get the ViewPager and set it's PagerAdapter so that it can display items 
    ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager); 
    PageAdapter pageAdapter = new PageAdapter(getSupportFragmentManager(), FilterActivity.this); 
    viewPager.setAdapter(pageAdapter); 

    // Give the TabLayout the ViewPager 
    final TabLayout tabLayout = (TabLayout) findViewById(R.id.sliding_tabs); 
    tabLayout.setupWithViewPager(viewPager); 



    } 
} 

benim kodudur Ve bu XML benim kodudur

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <include 
     android:id="@+id/app_bar" 
     layout="@layout/app_bar"> 
    </include> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/sliding_tabs" 
     android:layout_width="fill_parent" 
     style="@style/MyCustomTabLayout" 
     android:layout_height="48dp"/> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/viewpager" 
     android:layout_width="match_parent" 
     android:layout_height="0px" 
     android:layout_weight="1" 
     android:background="@android:color/white" /> 

</LinearLayout> 

o

cevap

156

neyi @ 如果 我 benzer, fakat tabBackground olmalıdır: Arka plan xml dosyasında

<style name="MyCustomTabLayout" parent="Widget.Design.TabLayout"> 
    <item name="tabBackground">@drawable/background</item> 
</style> 

:

+0

Zamanımı kurtardığın için teşekkürler. Cevabın benim için çalış. –

+1

Ayrıca, bu özniteliğe bir renk değeri de ekleyebilirsiniz: örn: app: tabBackground: @ color/colorAccent –

+0

Çözüm için teşekkür ederiz. Ancak, varsayılan dalgalanma etkisini onunla kaybettim. –

1

Var seçili zaman bir sekme arka plan rengini değiştirmek istiyorum API'u kontrol etmeyi denediniz mi?

OnTabSelectedListener olay için bir dinleyici oluşturmanız gerekir, daha sonra kullanıcı herhangi bir sekmeyi seçtiğinde, doğru olanı olup olmadığını kontrol etmeli, ardından tabLayout.setBackgroundColor(int color) kullanarak arka plan rengini değiştirmeli veya doğru sekme yapmıyorsa Aynı yöntemle tekrar normal renge geri dönersiniz. DJ önerdi 是 nihayet benim için çalıştı Ne

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_selected="true" android:drawable="@color/white" /> 
    <item android:drawable="@color/black" /> 
</selector> 
+0

Evet, bunu denedim ama tabLayout tam sekme Widget rengini değiştirir ve yalnızca sekme rengi ve diğer sekmeleri aynı renk ile kalmak değiştirir tabLayout.Tab bir yöntem bulamıyorum . –

+0

Neyin peşinde olduğunuzdan% 100 emin değilim. Sadece bir sekmenin gövdesini renklendirmek istiyorsanız, o sekmenin içine bir kapsayıcı/görünüm ekleyebilirsiniz, daha sonra konteyner/görünümü arka plan rengini XML gibi normalde ayarlayabilmeniz gerekir, örneğin aşağıdaki arka plan ayarlanır red 'android: background = FF0000' – sorifiend

+0

Bu diğer soruları/cevapları size yardımcı olabilir: http://stackoverflow.com/questions/30904138/how-to-change-the-new-tablayout-indicator-color-and ve ve http://stackoverflow.com/a/30755351/1270000 – sorifiend

12

Bu deneyebilirsiniz böylece görünüyor layout dosya ve style içine değil, olduğu gibi:

res/layout/somefile.xml:

<android.support.design.widget.TabLayout 
    .... 
    app:tabBackground="@drawable/tab_color_selector" 
    ... 
    /> 

ve seçici res/drawable/tab_color_selector.xml:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@color/tab_background_selected" android:state_selected="true"/> 
    <item android:drawable="@color/tab_background_unselected"/> 
</selector> 
+0

ve bunun nasıl uygulanacağı – TSR

7

xml bağladıkları ekleyin:

<android.support.design.widget.TabLayout 
    .... 
    app:tabBackground="@drawable/tab_color_selector" 
    ... 
    /> 

Ve çekilebilir klasörde oluşturun tab_color_selector.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@color/tab_background_selected" android:state_selected="true"/> 
    <item android:drawable="@color/tab_background_unselected"/> 
</selector> 
1

Xml'de olabilir.

<android.support.design.widget.TabLayout 
     android:id="@+id/tabs" 
     app:tabTextColor="@color/colorGray" 
     app:tabSelectedTextColor="@color/colorWhite" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 
İlgili konular