10

Próbuję użyć nowej TabLayout w bibliotece projektowania Android, aby utworzyć pasek aplikacji z ikonami.Zakładka z ikoną za pomocą TabLayout w bibliotece Android Design

tak: enter image description here

w jaki sposób można to zrobić za pomocą nowego TabLayout Android Biblioteki projektu.

Czy istnieje proste rozwiązanie tego problemu, czy też muszę używać tylko setCustomView. staram się tego unikać. ponieważ nie uzyskałem koloru tinty dla ikony takiej jak powyższy obrazek.

staram się pisać tak:

tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.ic_dashboard)) 

ale ikona nadal pozostać w tym samym kolorze, kiedy wybrać zakładkę

+0

Nie użyłem "TabLayout" bardzo, więc wybacz mi, jeśli to nie jest pomocne, ale czy próbowałeś użyć do 'TabLayout # setTabTextColors (int normalColor, int selectedColor)'? Nie jestem pewien, czy da ci to, czego chcesz, ale nie zaszkodzi spróbować go ustawić? –

Odpowiedz

-2

Rozwiązałem to tak:

tint_tab.xml

<com.hannesdorfmann.appkit.image.TintableImageView 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
app:tint="@color/tab_color_selector"/> 

w ciebie kodu java

TintableImageView tab1 = (TintableImageView) LayoutInflater.from(this).inflate(R.layout.tint_tab, null); 
tab1.setImageResource(R.drawable.ic_dummy); 
mTabLayout.getTabAt(0).setCustomView(tab1) 

ref: https://github.com/sockeqwe/appkit/blob/master/image/src/main/java/com/hannesdorfmann/appkit/image/TintableImageView.java

9

trzeba stworzyć selector dla ikony. Na przykład:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/ic_dashboard_pressed" 
      android:state_pressed="true" /> 
    <item android:drawable="@drawable/ic_dashboard_selected" 
      android:state_selected="true" /> 
    <item android:drawable="@drawable/ic_dashboard_normal" /> 
</selector> 
+3

Dla nowych programiści androida natknęli się na to pytanie: Ten plik powinien zostać zapisany w katalogu do rysowania (np. 'My_icon.xml'). Dostęp do nich można uzyskać za pomocą kodu, podobnie jak zwykła ikona do rysowania. (np. 'R.drawable.my_icon') – ntsh

+1

, więc jeśli masz 4 zakładki, zachowamy 4 selektory? to byłoby złe myślę, że ... – Manikanta

+1

@Manikanta masz już wiele stanów ikon dla każdej karty, aby pokazać wciśnięty, skoncentrowany itp. Selektory są bardzo wygodnym sposobem na utrzymanie relacji między ikonami. Ta technika znacznie upraszcza pliki layoutu, ponieważ muszą one zajmować się tylko jednym selektorem 'drawable', zamiast wiedzieć o różnych stanach. –

1

użyłem to lubię to: utworzyłem plik xml w losowaniu pokazanym przez @Budius.

w kodzie: tabLayout.getTabAt(0).setIcon(R.drawable.settings_tab_drawable);

i tak dalej.