2010-06-12 24 views
8

Chciałbym, aby moje zakładki z Androidem wyglądały płasko i prosto, jak te w oficjalnej aplikacji TWitter. Jak mogę przesłonić domyślny (jasny) motyw i zmienić obrazy tła dla kart za pomocą definicji stylów/motywów?Jak zmienić styl zakładki w systemie Android?

+0

Najbardziej eleganckie rozwiązanie widziałem do tej pory to: http://stackoverflow.com/questions/3078081/setting-a-global-style-for-views-in-android/3166865#3166865 –

Odpowiedz

16

Możesz dopasować zakładki za pomocą kodu - oto fragment z mojej aplikacji, ale możesz też bezpośrednio przypisać motywy zamiast obrazu tła. (Nie użyłem jeszcze sposobu za pomocą atrybutów xml, nie jestem pewien, czy to też jest jakoś dostępne).

private void initTabs() { 
    tabs = (TabHost) findViewById(R.id.tabhost); 
    tabs.setup(); 
    tabs.setBackgroundResource(R.drawable.bg_midgray); 

    TabHost.TabSpec spec; 

    // Location info 
    txtTabInfo = new TextView(this); 
    txtTabInfo.setText("INFO"); 
    txtTabInfo.setPadding(0, 5, 0, 0); 
    txtTabInfo.setTextSize(11); 

    txtTabInfo.setBackgroundResource(R.drawable.bg_tab_left_active_right_inactive); 
    txtTabInfo.setTextColor(Color.DKGRAY); 
    txtTabInfo.setGravity(Gravity.CENTER_HORIZONTAL); 
    txtTabInfo.setHeight(39); 
    spec = tabs.newTabSpec("tabInfo"); 
    spec.setContent(R.id.tabInfo); 
    spec.setIndicator(txtTabInfo); 
    tabs.addTab(spec); 
    ... 
} 
+0

spec. setIndicator (txtTabInfo); To nie jest dozwolone. Kompilator podaje błąd w tej linii. – sachin

3

użyłem następującą definicję mojego rozciągliwej, tab_background.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
     <item android:state_selected="true" android:drawable="@drawable/tab_bg_selected" /> 
     <item android:drawable="@drawable/tab_bg_normal" /> 
    </selector> 

następnie iteracyjne nad kartami, aby je ustawić.

TabWidget tabWidget = tabHost.getTabWidget(); 

for(int i=0; i<tabWidget.getChildCount(); i++) 
    tabWidget.getChildAt(i).setBackgroundResource(R.drawable.tab_background); 
Powiązane problemy