2009-12-15 18 views
6

Ho un'applicazione che ha come target il framework 1.5 e utilizza il tema di luce predefinito. Quando si utilizza un widget di schede con questo tema, le immagini delle schede sono appena visibili e le didascalie delle schede sono praticamente impossibili da distinguere, ad eccezione della scheda attualmente attiva.Tema Agenda in tema luce Android

Nel tema scuro predefinito, queste schede risultano abbastanza chiare, ma questa non è una soluzione di cui sarei molto felice. C'è una semplice impostazione che posso impostare, che imposta il widget scheda per una migliore visibilità in temi chiari, o dovrei manomettere manualmente le immagini e gli stili di testo?

risposta

10

non è bello, ma puoi provare questo nella tua attività di tabulazione.

// 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 dovrebbe avere

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

AndroidManiest.xml dovrebbe avere

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

se si vuole fare qualcosa di più folle, provare http://ezmobile.wordpress.com/2009/02/02/customized-android-tabs/

+1

sì, questo dovrà fare. voglio mantenere un aspetto il più possibile nativo, quindi non mi avventurerò in una grafica personalizzata. essenzialmente, impostare il colore di sfondo del Tabwidget sul nero era tutto ciò che serviva per rendere visibili le schede. il resto è già bianco dal tema principale dell'applicazione, quindi non ho fatto altre configurazioni. Per quanto riguarda le risorse/colori; come mai stai definendo i tuoi colori qui? Non è lo stesso nero di "android.graphics.Color.BLACK"? o semplicemente non vuoi importare l'intera libreria, solo per due colori? –

+0

ho più colori nel mio file di colori - volevo rendere il post pulito :) – yanokwa

+0

Ho provato questa soluzione ma in eclissi le GlobalConstants sono sottolineate in rosso. si legge l'errore. "Impossibile risolvere GlobalConstants". Devo dichiarare GlobalConstants o importarlo? –

2

Questo è un bug; puoi segnalarlo nello the issue tracker?

AFAIK, la soluzione alternativa per personalizzare gli stili di testo e immagine sembra giusta.

È anche degno di nota il fatto che il widget scheda in 2.0 non sembra avere uno stile leggero.

2

Utilizzando lo strumento hierarchyviewer ho trovato l'ID Android per la visualizzazione testuale nella scheda. Un modo migliore per cambiare il (colore compreso) le proprietà di testo è nel modo seguente ...

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

Un modo molto semplice per risolvere il problema di colore/contrasto nel layout:

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

Questo imposta lo sfondo del TabWidget su nero e aggiunge un po 'di padding in modo da avere contrasto con le schede sullo sfondo nero. Non è perfetto, ma funziona in tema 1.5, 2.2, chiaro e scuro.