Dialogue dépouillement avec AppCompat-v7 22 résultats dans laide des ombres sur l'api < 21

Je suis en utilisant AppCompat à écrire un matériel de conception de style de l'app. Depuis AppCompat n'affecte pas les dialogues, je suis le dépouillement des boîtes de dialogue en tant que tel:

styles.xml:

<style name="AppTheme.Base" parent="Theme.AppCompat">
    <!-- Set AppCompats color theming attrs -->
    <item name="colorPrimary">@color/green</item>
    <item name="colorPrimaryDark">@color/green_darker</item>
    <item name="colorAccent">@color/accent</item>

    <item name="android:alertDialogTheme">@style/alertDialog</item>
    <item name="android:dialogTheme">@style/alertDialog</item>
</style>

<style name="alertDialog" parent="Theme.AppCompat.Dialog">
    <item name="colorPrimary">@color/green</item>
    <item name="colorPrimaryDark">@color/green_darker</item>
    <item name="colorAccent">@color/accent</item>
</style>

Je suis gettings exactement ce que je voulais sur l'api android >= 21, mais sur d'autres appareils, je me retrouve avec une "box" autour de la boîte de dialogue.

Est-il un moyen de se débarrasser de la "boîte" à travers le dialogue et même les couleurs et les matières thème est appliqué sur l'api < 21, de préférence sans depencendies?

Application sur l'Api < 21:

Dialogue dépouillement avec AppCompat-v7 22 résultats dans laide des ombres sur l'api < 21

Application sur l'API >= 21:

Dialogue dépouillement avec AppCompat-v7 22 résultats dans laide des ombres sur l'api < 21

  • Pour le dépouillement d'alerte des boîtes de dialogue, vous devez utiliser le android:Theme.DeviceDefault.Dialog.Alert (toujours native look) thème. Sinon, le fond sera dupliqué. Sur API 21 vous ne voyez pas de différence, mais je pense qu'il y aura de découvert. Pour le dépouillement des activités les boîtes de dialogue d'utiliser le android:Theme.DeviceDefault.Dialog (natif de look), ou Theme.AppCompat.Dialog (matériel) et des thèmes.
  • android:Theme.DeviceDefault.Dialog est uniquement disponible sur les API > 14. Que dois-je utiliser sur l'API 11?
  • De plus, ce aussi overdraws la frontière sur la non sucette api. image
  • Honnêtement, personne ne donne une merde au sujet de l'API 11, il n'y a pratiquement pas de périphériques d'API 11 dans la pratique. Vous pouvez ainsi faire votre minSdk=14.
  • D'accord, minSdk=11 est une douleur pour travailler avec. En supposant que j'ai opter pour une minSdk=14, comment pourrais-je aller sur la fixation du découvert pour les comptes? Remplacement de Theme.AppCompat.Dialog par android:Theme.DeviceDefault.Dialog.Alert résultats dans un accident.
  • Pouvez-vous mettre à jour votre question de départ, avec la trace de la pile? Sur le dessus de ma tête, j'ai eu des plantages lorsque j'ai été en utilisant rien de TextAppearance.AppCompat.* dans ces boîtes de dialogue. En fonction de ce que l'exception est, vous pourriez avoir besoin de définir un texte personnalisé apparences.
  • J'ai téléchargé la stacktrace lors de l'utilisation de android:Theme.DeviceDefault.Dialog.Alert ici: gist.github.com/git-commit/8490793d3fef8e24bbaf Malheureusement, la stacktrace est coupé par le logcat.
  • Ouais, ce que j'ai dit ci-dessus. Texte apparences que vous utilisez dans ces boîtes de dialogue ne peut pas hériter ou être TextAppearance.AppCompat.*. Définir un aspect du texte des styles et l'utilisation de ceux-ci. Hériter @android:TextAppearance et personnaliser textColor et textSize fonction du Matériau de la Conception des spécifications (texte de Corps de type 1) et vous serez amende.
  • Option 2: Utilisation de github.com/avast/android-styled-dialogs
  • J'ai été jouer avec le matériau-bibliothèque de dialogue. Je pense que je pourrais rester avec elle, si la solution vous l'avez souligné à ne pas travailler ou de résultats dans d'étranges code personne d'autre ne peut maintenir.
  • Signalé: code.google.com/p/android/issues/detail?id=194475

InformationsquelleAutor snowdragon | 2015-04-13