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 AppCompat’s 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:
Application 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 leandroid:Theme.DeviceDefault.Dialog
(natif de look), ouTheme.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
parandroid: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 personnalisertextColor
ettextSize
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
Vous devez vous connecter pour publier un commentaire.
Avec la nouvelle
AppCompat v22.1
vous pouvez utiliser la nouvelle android.de soutien.v7.app.AlertDialog ou la nouvelle AppCompatDialogIl suffit d'utiliser un code comme celui-ci (bien sûr, dans votre cas, vous devez utiliser une mise en page personnalisée pour avoir la barre de progression)
Et l'utilisation d'un style comme ceci:
builder.getButton(DialogInterface.BUTTON_POSITIVE).setTextColor(Color.parseColor("#FF0000"));
ou.setBackgroundColor()
ou ... de la même façon aprèsbuilder.show();
.Au cas où quelqu'un est toujours à la recherche d'une solution simple et efficace, il suffit d'ajouter cette ligne à votre "alertDialog" style:
P. S. la modification de cette propriété affecte également PreferenceFragment de boîtes de dialogue sur l'API >= 21, alors assurez-vous que vous utilisez des styles différents: transparent bg pour API < 21, et sans modification de l'API >= 21
J'ai eu exactement le même problème avec la nouvelle AppCompat 22 de la bibliothèque lors de l'utilisation d'android.de soutien.v7.app.AlertDialog pour tous mes AlertDialogs, mais le fond des couches touchées ProgressDialogs.
Tous mes AlertDialogs lorsque de style à l'aide de mon thème personnalisé avait l'air grand, mais le ProgressDialog avait l'étrange superposition sur le fond comme décrit dans l'OP.
Une option que j'ai eu était de définir un style à chaque fois, j'ai construit une ProgressBar, mais je cherchais une application large de la solution.
Avec l'aide de ces deux liens:
Comment Style AlertDialogs comme un Pro et Joerg Richter Blog j'ai été en mesure de se débarrasser de la couche supplémentaire tiré sur < 21 ProgressDialogs.
La question que j'ai constaté, c'est que sur toutes les versions de la ProgressBar tire son contexte basées sur ce qui est défini par défaut dans "android:alertDialogStyle".
Afin de se débarrasser de la couche supplémentaire, je devais définir mon propre style et à les fixer pour "android:alertDialogStyle". En le faisant, je suis aussi en substituant les mises en page par défaut appliquée à ProgressDialogs.
Voici mon themes.xml:
Et mon styles.xml:
android:alertDialogStyle
et la mettre dans votre défautstyle.xml
. Je n'avais vraiment pas besoin de créer un autre style dans mon v21style.xml
.ProgressDialog - Essayez-le pour ci-dessous android 5
ou
Vous pouvez télécharger révision 22.1.0 (mis à jour il y a quelques jours) et l'utilisation android.de soutien.v7.app.AlertDialog