Comment créer par programme un style de thème Android?

Il existe de nombreux docs et tutoriels sur la création ou la personnalisation d'un style de thème Android via XML, mais n'ont pas été en mesure de trouver un moyen de le créer dans un code. Des idées sur la création du style dans le code plutôt que sur le xml?

Ceci est l'exemple XML, il faut créer cela par programme dans le code:

  • Comment attacher l'émulateur Android à ADB?
  • Détecter un glissement de doigt par JavaScript sur iPhone et Android
  • Changer l'orientation de l'écran par programmation à l'aide d'un bouton
  • Dans Android; Est-il préférable d'appliquer un OnClickListener ou d'utiliser Android: onClick?
  • Ouvrir le lien depuis Android Webview dans le navigateur normal comme popup
  • Genymotion n'arrêtera pas l'application optimisée
  • <resources> <style name="AppTheme" parent="android:Theme.Material"> <item name="android:colorPrimary">@color/primary</item> <item name="android:colorPrimaryDark">@color/primary_dark</item> <item name="android:colorAccent">@color/accent</item> </style> </resources> 

  • Java ne reconnaît pas l'identification des éléments XML d'Android
  • Pourquoi mon service Android est-il redémarré lorsque le processus est tué, même si j'ai utilisé START_NOT_STICKY?
  • Comment changer Textcolor de Switch dans Android
  • Comment détecter la direction de glissement entre gauche / droite et haut / bas
  • Définir le SDK d'Android derrière le proxy du serveur?
  • Avertissement OnTouchListener: onTouch devrait appeler View # performClick quand un clic est détecté
  • 2 Solutions collect form web for “Comment créer par programme un style de thème Android?”

    Réponse courte: Il n'est pas possible en tant que création programmatique d'un thème et de définir comme thème d'application (même si nous avons réalisé créer un objet Theme ) sans un identifiant de ressource de thème.

    Détails:

    Lorsque vous appelez setTheme la fonction ineffecte une méthode de ContextWrapper qui, à la fin, appelle AssetManager avec le pointeur d'identification de ressource, la classe AssetManager contient la méthode d'application du thème d'application, qui est l'appel JNI

     native static final void applyThemeStyle(long theme, int res, boolean force); 

    Comme ci-dessus, nous ne pouvons passer qu'un ID de ressource pour appliquer le style. Mais les options possibles sont

    1. Bien que limité aux constantes de caractéristiques de la classe Window . Nous pouvons utiliser setFeatureDrawable et les constantes de fonctionnalité pour définir certains jeux comme FEATURE_ACTION_BAR , FEATURE_CONTEXT_MENU etc.
    2. En utilisant la fonction setTheme à partir de l'activité, nous pouvons définir le thème à partir d'une ressource de style, qui résoudra le problème mentionné dans les commentaires d' AjaySharma & Nathan

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

    Vous pouvez l'utiliser …

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.