Ho alcune difficoltà con l'impostazione di un "commutatore di temi" a livello di codice. Vorrei cambiare i temi da app (tra bianco (Theme.Light.NoTitleBar) e Dark (Theme.Black.NoTitleBar)) e quello che faccio è: Ho impostato uno SharedPreference:La modifica del tema non funziona su <4.0 come dovrebbe
final String PREFS_NAME = "MyPrefsFile";
final SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
final SharedPreferences.Editor editor = settings.edit();
e di ho un due pulsanti per passare temi (secondo è quasi identico)
Button ThemeWhite = (Button) findViewById(R.id.ThemeWhite);
ThemeWhite.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
editor.putBoolean("Theme", false);
editor.commit();
System.exit(2);
}
});
e in accattonaggio di ogni attività I controllare SharedPreference
boolean theme = settings.getBoolean("Theme", false);
if(theme){
this.setTheme(R.style.Theme_NoBarBlack);
} else{
this.setTheme(R.style.Theme_NoBar);
}
setContentView(R.layout.aplikacja);
definisco temi in file di styles.xml nei valori delle cartelle:
<resources>
<style name="Theme.NoBar" parent="@android:style/Theme.Light.NoTitleBar" />
<style name="Theme.NoBarBlack" parent="@android:style/Theme.NoTitleBar" />
nei valori-V11:
<resources>
<style name="Theme.NoBar" parent="@android:style/Theme.Holo.Light.NoActionBar" />
<style name="Theme.NoBarBlack" parent="@android:style/Theme.Holo.NoActionBar" />
nei valori-V14:
<resources>
<style name="Theme.NoBar" parent="@android:style/Theme.DeviceDefault.Light.NoActionBar" />
<style name="Theme.NoBarBlack" parent="@android:style/Theme.DeviceDefault.NoActionBar" />
file manifesto:
<application
...
android:theme="@style/Theme.NoBar" >
Tutto sta funzionando eccellente su Android> 4.0 , ma quando uso 2.2 non cambia tema - proprio carattere è sempre bianca come dovrebbe essere, ma non v'è senza sfondo scuro.
ho provato a controllare se almeno funziona e cambiato Theme.NoBarBlack nei valori (per Android < 3.0) e il suo valore lo stesso Theme.NoBar e poi quando ho premuto il pulsante di carattere non è stata modificata -come dovrebbe fare .
EDIT (problema riscontrato): Così dopo aver provato risultasse che su Android 2.2 del file Manifest sfondo insieme e di riposo, e programmaticamente cambiando tema riguardano solo il colore del testo. qualche idea del perché questo accada?
RISPOSTA (come non ho 10 reputazione): su Android 3.0 < importa se
super.onCreate(savedInstanceState);
È prima di impostare il tema oppure no.
quindi dovrebbe essere:
public void onCreate(Bundle savedInstanceState) {
setTheme(R.style.Theme_NoBar);
super.onCreate(savedInstanceState);
setContentView(R.layout.lista);
}
Scusate ragazzi per fare problema dal nulla, ma come si stava lavorando su> 3.0 ero confuso. Trascorri la metà della giornata lavorativa. :)
Grazie, ma ho commesso questo errore mentre stavo sperimentando con i temi ecc. E poi ho dimenticato di cambiarlo e copiarlo qui. Quindi qualcos'altro deve causare questo strano comportamento. –
Indovina, ma Theme.NoTitleBar non esiste a quel livello API. Deve essere Theme.Black.NoTitleBar –
@StephanBranczyk [Documentazione Android] (http://developer.android.com/reference/android/R.style.html#Theme_NoTitleBar) dice che 'Theme.NoTitleBar' esiste dal livello API 1. – Kyriog