2009-12-15 11 views
6

Mam aplikację, która kieruje do wersji 1.5 i używa domyślnego motywu świetlnego. Podczas korzystania z widgetu tabulatora z tym motywem obrazy kart są ledwo widoczne, a podpisy tabulacji są zupełnie niemożliwe do rozpoznania, z wyjątkiem aktualnie aktywnej karty.Android TabWidget in Light theme

W domyślnym ciemnym motywie te zakładki przychodzą dość wyraźnie, ale nie jest to rozwiązanie, z którego byłbym bardzo zadowolony. Czy istnieje proste ustawienie, które można ustawić, które ustawia widżet karty dla lepszej widoczności w jasnych tematach, czy też musiałbym ręcznie modyfikować obrazy i style tekstowe?

Odpowiedz

10

To nie jest ładne, ale możesz spróbować tego w działaniu karty.

// light theme support 
final TabHost tabHost = getTabHost(); 
tabHost.setBackgroundColor(Color.WHITE); 
tabHost.getTabWidget().setBackgroundColor(Color.BLACK); 

// hack to set font size 
LinearLayout ll = (LinearLayout) tabHost.getChildAt(0); 
TabWidget tw = (TabWidget) ll.getChildAt(0); 

// first tab 
RelativeLayout rllf = (RelativeLayout) tw.getChildAt(0); 
lf = (TextView) rllf.getChildAt(1); 
lf.setTextSize(21); 
lf.setPadding(0, 0, 0, 6); 

// second tab 
RelativeLayout rlrf = (RelativeLayout) tw.getChildAt(1); 
rf = (TextView) rlrf.getChildAt(1); 
rf.setTextSize(21); 
rf.setPadding(0, 0, 0, 6); 

/res/values/colors.xml powinien mieć

<resources> 
    <drawable name="black">#ff000000</drawable> 
    <drawable name="white">#ffffffff</drawable> 
</resources> 

AndroidManiest.xml powinien mieć

<application android:theme="@android:style/Theme.Light"> 

jeśli chcesz zrobić coś bardziej szalony, spróbuj http://ezmobile.wordpress.com/2009/02/02/customized-android-tabs/

+1

tak, to będzie musiało zrobić. Chcę zachować wygląd, który jest tak natywny, jak to możliwe, więc nie zapuszczę się w niestandardową grafikę. zasadniczo ustawienie koloru tła tab wirtualnego na czarny było wszystkim, czego potrzeba, aby karty były widoczne. reszta jest już białą z głównego motywu aplikacji, więc nie tworzyłem żadnych dalszych konfiguracji. Jeśli chodzi o zasoby/kolory; jak to jest, że tutaj definiujesz własne kolory? Czy to nie jest takie samo czarne jak w 'android.graphics.Color.BLACK'? czy po prostu nie chcesz importować całej biblioteki, tylko na dwa kolory? –

+0

Mam więcej kolorów w moim pliku kolorów - chciałem, aby poczta stała się czystsza :) – yanokwa

+0

Próbowałem tego rozwiązania, ale w Eclipse GlobalConstants są podkreślone na czerwono. błąd odczytuje., "GlobalConstants nie można rozwiązać". Czy muszę zadeklarować GlobalConstants lub zaimportować go? –

2

To jest błąd; czy możesz zgłosić to w numerze the issue tracker?

AFAIK, Twoje obejście dostosowania stylu tekstu i obrazu brzmi dobrze.

Warto również zauważyć, że widget tabulatora w wersji 2.0 nie ma lekkiego stylu.

2

Używając narzędzia hierarchyviewer znalazłem identyfikator Android dla widoku tekstowego na karcie. Lepszym sposobem zmiany właściwości tekstu (w tym kolor) jest w następujący sposób ...

TabWidget tw = (TabWidget)tabHost.findViewById(android.R.id.tabs); 
View tabView = tw.getChildTabViewAt(0); 
TextView tv = (TextView)tabView.findViewById(android.R.id.title); 
tv.setTextSize(20); 
2

Bardzo prosty sposób na rozwiązanie problemu koloru/kontrastu w układzie:

<TabWidget 
    android:id="@android:id/tabs" 
    android:background="#FF000000" 
    android:padding="2dp" 

ten Ustawia tło TabWidget na czarny i dodaje trochę marginesu, dzięki czemu masz kontrast z zakładkami na czarnym tle. Nie jest doskonały, ale działa w wersji 1.5, 2.2, jasny i ciemny.