Android:Comment définir par programmation une Activité de thème de Thème de.Dialogue
J'ai donc une Activity
(dire TestActivity
) qui doit agir comme un normal unthemed Activity
ainsi que d'un Theme.Dialog
à l'autre endroit. Je suis en train d'essayer de réutiliser les mêmes TestActivity
pour ces deux tâches.
Tous je suis à la recherche pour le réglage du thème de façon dynamique.
Le code est simple:
Voici mon activité de onCreate
qui fonctionne avec un fond noir
public void onCreate(Bundle icicle) {
if (Utility.isDialog == true)
setTheme(android.R.style.Theme_Dialog);
super.onCreate(icicle);
requestWindowFeature(Window.FEATURE_NO_TITLE);
.....
et voici l'Entrée du Manifeste
<activity android:name=".TestActivity"/>
Et en attendant, j'ai trouvé un post qui dit qu'il ne peut pas être fait ici c'est le post http://code.google.com/p/android/issues/detail?id=4394 .Mais il y a un fort sentiment que cela peut être fait.
Toutes les suggestions sont les bienvenues.
- Dois-je accepter qu'il y a pas de solution à cette question que cette post dit?
Vous devez vous connecter pour publier un commentaire.
Voudrais donner un travail autour de ce problème.
Problème : Comment faire pour utiliser la même activité que les deux dialogue et le plein écran.
Solution :
@android:style/Theme.Dialog
.Java
fichier, vérifier uneintent
supplémentaire qui définitdialog
mode.Theme
àandroid.R.style.Theme
. C'est la valeur par défauttheme
qui est appliqué si vous ne définissez pas de n'importe quel thème.Code :
Solution De Rechange:
Plus en plus complexes, la solution est d'utiliser
AlertDialog
comme ci-dessous:ListAdapter
classe étendue deArrayAdapter
.retour
1
dansgetCount
fonctionDans le
getView
fonction,inflate
lalayout
de laactivity
vous avez besoin et de faire une personnalisation avant de retourner leview
.C'est certainement une deuxième option de choix, si vous ne faites pas trop de traitement dans le
activity
class
cela pourrait être une option.Seule raison pour envisager cette solution pourrait être que la logique de le montrer dans un
dialog
est isolé à l'endroit où il est utilisé comme une boîte de dialogue.Les deux options ont travaillé pour moi, mais pour des raisons évidentes, je prends la première option. 🙂
vous pouvez utiliser
setTheme(..)
avant d'appelersetContentView(...)
etsuper.oncreate()
et il devrait fonctionner correctementComme plusieurs autres, les appels à setTheme dans onCreate (avant ou après mon appel à super.onCreate) ne fonctionne pas. Toutefois, en substituant setTheme, j'ai été en mesure de préciser un thème autre que celui mentionné à l'Manifest.xml. Plus précisément, les éléments suivants ont fonctionné sans problème:
J'ai trouvé ci-dessus dans la discussion à: https://code.google.com/p/android/issues/detail?id=4394
Appel
de l'Activité.setTheme()
dansonCreate()
avant d'appelersetContentView()
.utilisation
setTheme
avant d'appelersuper.onCreate(savedInstance)
Cela peut ne pas être applicable dans votre situation, mais vous pouvez utiliser le thème:
et il affichera votre activité en tant que boîte de dialogue lorsque l'écran est grand, et comme une activité régulière lorsque l'écran est petit.
Ce qui est couvert dans l'Android documentation sur Les boîtes de dialogue et contient également des informations sur la programmation d'un Dialogue qui peut aussi soleil en plein écran fragment.
Thème par défaut de la bibliothèque de l'appel:
Dans mon cas, j'ai été en utilisant AppCompat Thème, assurez-vous donc sur votre pièce d'identité vous référer à la bibliothèque digne de ce nom (c'est à dire):
Je sais que je suis en retard mais je tiens à poster une solution ici:
Vérifier l'intégralité du code source ici. C'est le code que j'ai utilisé lors de la modification de thème...