Come utilizzare il tema predefinito del dispositivo per l'applicazione?

Ho un'applicazione che voglio sviluppare per Android 2.1, 2.2, 2.3.3, 3.0 / 3.1 e 4.0.x. Tra questi livelli di API, esistono circa 3 diversi tipi di themes. L'ultimo tema 4.0.x è Holo.

Comunque, voglio che la mia app utilizzi il tema Android predefinito per qualunque dispositivo sia in uso. Se è su un dispositivo 4.0.x, voglio che utilizzi Holo. Se è su 2.3.3 voglio che utilizzi il tema da quella versione di Android. eccetera…

  • Impostare GIF animato come background Android
  • Come visualizzare il text in Android Canvas ShapeDrawable with nella versione RectShape o OvalShape?
  • Come get un selettore di elementi di androidi ListView per utilizzare state_checked
  • super.onCreate (savedInstanceState);
  • BLE GATT onCharacteristicChanged non chiamato dopo aver sottoscritto la notifica
  • Passare e restituire i valori da javascript e android e utilizzare come plugin di gap telefonico
  • C'è un modo semplice per avvicinarsi? Ho notato che con 4.0, hanno aggiunto un tema Theme.DeviceDefault che è ansible utilizzare, ma questo non mi aiuta per i livelli API più vecchi. Qual è l'approccio migliore a questo?

  • Errore: WatchActivity non può essere risolto a un tipo, perché lo sto ottenendo?
  • Android come mettere a fuoco SearchView di ActionBar
  • come installare applicazione apk dal mio pc al mio android mobile
  • Come mostrare le tabs In fondo invece in alto?
  • Android - il frammento .replace () non sostituisce il contenuto - lo mette in cima
  • la difficoltà della casella di controllo personalizzata in android
  • 2 Solutions collect form web for “Come utilizzare il tema predefinito del dispositivo per l'applicazione?”

    Attualmente esistono fino a 3, talvolta 4 Temi disponibili per dispositivi Android (variazioni .Light e simili non incluse)

    Theme

    Tema

    l'impostazione predefinita per le versioni precedenti di Android fino a 2.3 Gingerbread (10), inclusi alcuni cambiamenti di stile minori nelle versioni


    Theme.Holo

    Theme.Holo

    introdotto con Android 3.0 a nido d'ape (11)


    Theme.Material

    Theme.Material

    nuovo in Android 5.0 Lollipop (21)


    Theme.DeviceDefault

    (Potrebbe essere qualsiasi cosa)

    introdotto con 4.0 Ice Cream Sandwich (14), un tema che può essere personalizzato dal produttore del dispositivo. Rappresenta l'aspetto nativo del dispositivo, ovvero Holo o materiale su dispositivi Nexus (e nell'editor di progettazione di Android Studio), forse qualcosa di personalizzato su altri dispositivi. Nel caso in cui "qualcosa personalizzato" non sia un'opzione, questi dispositivi devono venire con le tematiche di riserva. Le applicazioni che desiderano la tematica di riserva devono tuttavia specificarlo.


    Qual è l'approccio migliore a questo?

    Nessun tema + targetSdkVersion> = 14

    L'opzione più semplice, ma non necessariamente, è quella di non definire alcun tema. Android selezionerà quindi l'impostazione predefinita per te. Ma Android non vuole sorprendere la tua applicazione con themes che non ti aspetti, per cui rientra nel tema che avresti probabilmente progettato per la tua applicazione. Lo fa guardando l' android:targetSdkVersion all'interno di AndroidManifest.xml (che può essere impostato oggi tramite gradle).

    • Le applicazioni che targetano vecchie piattaforms, che avevano solo Theme (ovvero livelli API 3-10), avranno solo Theme .
    • Le applicazioni con targeting 11-13 ricevono Theme.Holo .
    • 14 o superiore otterrà Theme.DeviceDefault .

    Poiché questo è solo per la compatibilità all'indietro, non riceverai Theme.Material sul tuo vecchio telefono di Gingerbread. Pertanto nessun tema + target 14+ = il dispositivo predefinito.

    Specificare diversi themes

    Il sistema di overlay delle risorse di Android consente di specificare stili basati sul livello API dell'apparecchio. Ad esempio versioni diverse di uno stile in res/values-v11 e res/values-v21 . Questo è anche ciò che le nuove applicazioni create tramite Android Studio installeranno per te.

    Ad esempio, la configuration più semplice per .Light tema di tipo .Light è così:

    /res/values/styles.xml viene applicato a each dispositivo e serve come base

     <resources> <style name="AppTheme" parent="android:Theme.Light"/> </resources> 

    /res/values-v11/styles.xml viene caricato su tutti i dispositivi che hanno livello API 11 e superiori (inclusi quelli che sono 21 e superiori). Ma solo la versione più recente di "AppTheme" è in realtà utilizzata.

     <resources> <style name="AppTheme" parent="android:Theme.Holo.Light"/> </resources> 

    /res/values-v21/styles.xml

     <resources> <style name="AppTheme" parent="android:Theme.Material.Light"/> </resources> 

    Nota: in alternativa, specificare Theme.DeviceDefault in /res/values-v14/styles.xml dovrebbe essere sufficiente per avere un aspetto predefinito ma che non consente di ottimizzare il disegno. Non fa male aggiungere l'override v14. DeviceDefault e Holo potrebbero essere diversi, dopo tutto.


    AndroidManifest.xml è il luogo in cui viene utilizzato il tema personalizzato. Ad es. Come impostazione predefinita di applicazione:

     ... <application android:theme="@style/AppTheme" ... 

    Collegamenti alla documentazione ufficiale

    Seleziona un tema basato sulla versione di piattaforma – Doc ufficiale per la definizione di stili diversi tramite configurazioni di risorse

    Holo Everywhere – post sul blog che spiega il meccanismo predefinito e il tema DeviceDefault / Holo

    Utilizzo della documentazione materiale del tema Tema

    Puoi dichiarare un tema nei tuoi valori / styles.xml e poi nei tuoi valori-v11 / styles.xml l'override con la versione Holo:

    Valori / styles.xml:

      <style name="DialogTheme" parent="@android:style/Theme.Dialog"></style> 

    I valori-V11 / styles.xml:

      <style name="DialogTheme" parent="@android:style/Theme.Holo.Light.Dialog.NoActionBar"></style> 

    Farlo in questo modo e avrai themes Holo su dispositivi API 11+ e themes regolari sugli altri.

    Saluti Steffen Vangsgaard

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.