Quando eseguo la mia applicazione Android che io chiamo un metodo per verificare se l'applicazione è in esecuzione su una tavoletta con:Impostazione Tema Programmactically cause sfondo nero
public boolean isTablet(Context context){
boolean xlarge = ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == 4);
boolean large = ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK)== Configuration.SCREENLAYOUT_SIZE_MASK);
return(xlarge || large);
}
se il metodo restituisce true (cioè i soddisfa dispositivo una di queste condizioni)
ho impostato il mio tema ad un tema di dialogo tramite:
setTheme(R.style.MyTheme);
dove MyTheme
è un tema che eredita dal genitore Theme.Holo.Light.Dialog
Questa logica funziona bene tuttavia mi dà uno strano effetto in background. L'intento di chiamata è completamente oscurato, mentre se imposto il tema nel manifesto, lo sfondo è solo leggermente sfumato.
Update - codice aggiunto
private Context mClassContext = this;
@Override
public void onCreate(Bundle savedInstanceState){
if(isTablet(mClassContext)){
setTheme(R.style.MyTheme);
}
super.onCreate(savedInstanceState);
setContentView(R.layout.myLayout);
}
Come faccio a replicare questo?
Si esegue il 'setTheme' prima di' SetContentView() '? – kaderud
sì, dovrei spostarlo dopo questo? Sto postando il mio 'onCreate()' ora –
ho spostato il codice dopo 'setContentView()' e non imposta il mio tema. L'ho provato prima. Se vuoi che il tema sia impostato devi farlo prima di chiamare 'setContentView()'. Non capisco perché lo sfondo diventa completamente oscurato. –