2012-04-11 14 views
5

Używam zdeprecjonowanych bibliotek dla TabHost/TabWidget w aplikacji Ice Cream Sandwich. Nie mam czasu, aby zapoznać się z ActionBarSherlock, więc musiałem wejść do aplikacji w jedyny znany mi sposób.Jak wypozycjonować TabWidget w Ice Cream Sandwich?

Chciałbym wiedzieć, w jaki sposób mogę stylizować TabWidget i jego obiekty Tab, od zmiany koloru wybranej karty, do kolorów tła i obrazu? Używanie standardowej stylizacji i kompozycji nie działa.

Odpowiedz

8

Zakładając, że przestarzała biblioteka działa tak jak zawsze, tak jak powinna, jest to procedura, której użyłem do pokolorowania moich zakładek. Ja po prostu ustawić tło w kodzie w następujący sposób, gdyż nie był dostępny w direcly xml:

TabWidget tabs = (TabWidget)getTabWidget();    
     for (int i = 0; i<tabs.getChildCount(); i++) { 
      RelativeLayout tab = (RelativeLayout) tabs.getChildAt(i); 
      tab.setBackgroundDrawable(this.getResources().getDrawable(R.drawable.tabindicator)); 

tabindicator odkształcalne jest następujący:

<?xml version="1.0" encoding="utf-8" ?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<!-- Non focused states --> 
<item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_unselected" /> 
<item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_selected" /> 
<!-- Focused states --> 
<item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_focus" /> 
<item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_focus" /> 
<!-- Pressed --> 
<item android:state_selected="true" android:state_pressed="true" android:drawable="@drawable/tab_press" /> 
<item android:state_pressed="true" android:drawable="@drawable/tab_press" /> 
</selector> 

Te obrazy kanału alfa były tylko 9-płatkowe z kolor, chociaż możesz uzyskać podobny efekt przy użyciu standardowego koloru.

+0

To było mniej więcej na miejscu, dzięki. Musiałem przejść do TabWidget, wywołując tabHost.getTabWidget(), ale stamtąd reszta została wprowadzona. Dziękuję uprzejmie Stev_k. –

+0

To znów jest używane po wprowadzeniu 'FragmentTabHost' w bibliotece wsparcia. Dodatkowo widok tabulatora nie jest "RelativeLayout", ale jest "LinearLayout" w 'FragmentTabHost'. –

Powiązane problemy