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…

  • Quando l'Attività ha terminato il disegno?
  • Come autenticare gli utenti dal servizio web di sharepoint 2013 e dalla directory triggers
  • Rimuovere il progetto da Android Studio
  • Le patch esistenti per android tabwidget per consentire le tabs sul lato sinistro?
  • Utilizza i tag di frammento
  • Inserimento di dati di massa che richiedono molto tempo Sqlite
  • 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?

  • Rinomina il pacchetto e l'errore "La class di attività non esiste"
  • GSON: ha previsto una string ma era BEGIN_OBJECT?
  • Android Studio-No Module
  • Android NDK: Come get l'architettura del compilatore in Android.mk dynamicmente
  • Estensione di un text EditText in Android. Che cosa sto facendo di sbagliato?
  • Come get una dimensione della scheda SD di memorizzazione esterna (con scheda SD montata)?
  • 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.