Sök…


Lägga till DayNight-temat i en app

DayNight-temat ger en app den coola möjligheten att byta färgscheman baserat på tid på dagen och enhetens senaste kända plats.

Lägg till följande i dina styles.xml :

<style name="AppTheme" parent="Theme.AppCompat.DayNight">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
</style>

Teman som du kan utöka från för att lägga till förmågan att växla tema för natt natt är följande:

  • "Theme.AppCompat.DayNight"
  • "Theme.AppCompat.DayNight.NoActionBar"
  • "Theme.AppCompat.DayNight.DarkActionBar"

Bortsett från colorPrimary , colorPrimaryDark och colorAccent kan du också lägga till alla andra färger som du vill byta, t.ex. textColorPrimary eller textColorSecondary . Du kan också lägga till appens anpassade färger till den här style .

För att byta tema till arbete måste du definiera en standardfärger.xml i colors.xml res/values och en annan colors.xml i colors.xml res/values-night och definiera dag / nattfärger på lämpligt sätt.

För att byta tema, ring AppCompatDelegate.setDefaultNightMode(int) -metoden från din Java-kod. (Detta kommer att ändra färgschemat för hela appen, inte bara någon aktivitet eller fragment.) Till exempel:

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);

Du kan passera något av följande tre enligt ditt val:

  • AppCompatDelegate.MODE_NIGHT_NO : detta ställer in standardtemat för din app och tar färgerna som definieras i res/values katalogen. Det rekommenderas att använda ljusa färger för detta tema.
  • AppCompatDelegate.MODE_NIGHT_YES : detta ställer in ett natttema för din app och tar färgerna som definieras i res/values-night katalogen. Det rekommenderas att använda mörka färger för detta tema.
  • AppCompatDelegate.MODE_NIGHT_AUTO : den här auto växlar appens färger baserat på tid på dagen och de färger du har definierat i kataloger för values och values-night .

Det är också möjligt att få aktuell nattläge med getDefaultNightMode() . Till exempel:

int modeType = AppCompatDelegate.getDefaultNightMode();

Observera dock att temaomkopplaren inte kommer att kvarstå om du dödar appen och öppnar den igen. Om du gör det kommer temat att växla tillbaka till AppCompatDelegate.MODE_NIGHT_AUTO , som är standardvärdet. Om du vill att temaomkopplaren ska bestå, se till att du lagrar värdet i delade preferenser och laddar det lagrade värdet varje gång appen öppnas efter att den har förstörts.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow