web-dev-qa-db-fra.com

Comment afficher une activité en tant que pop-up sur une autre activité?

J'ai une activité A et il y a un bouton B dans la vue. Si quelqu'un appuie sur B, je souhaite une fenêtre contextuelle pouvant afficher une partie de l'écran rendant A invisible dans cette zone, mais le reste de A est visible mais non actif. Comment puis-je atteindre cet objectif?

33
bhups

Si vous voulez utiliser une activité au lieu d'une boîte de dialogue, définissez le thème de l'activité sur Android:theme="@Android:style/Theme.Dialog" dans le manifeste. L'activité apparaîtra alors comme une boîte de dialogue (flottant au-dessus de ce qui se trouvait dessous).

63
oli

Pour AppCompat, ajoutez 

Android:theme="@style/Theme.AppCompat.Dialog.Alert"

à l'activité dans AndroidManifest

16
Actiwitty

La classe Dialog est parfaite pour cela. vous pouvez trouver des exemples simples ici .

6
Sephy

Juste pour ajouter la réponse de oli, veillez à utiliser la boîte de dialogue du thème que vous utilisez dans votre application.

Dans mon cas, j'ai fait Android:theme="@Android:style/Theme.Holo.Light.Dialog"

3
Caio Faustino

Pour appcompat, cela peut être utilisé dans le manifeste

<activity Android:theme="@style/Theme.Base.AppCompat.Dialog.FixedSize" >
</activity>
2
Arslan Mehboob

La définition du thème sur Android:theme="@Android:style/Android:Theme.Holo.Panel" a fonctionné pour moi.

Étapes - 1. Définissez le thème de l'activité dans le fichier manifeste sur Android:theme="@Android:style/Android:Theme.Holo.Panel" (il doit être remplacé par le thème utilisé). Ex:

<activity
      Android:name=".EditActivity"
      Android:theme="@Android:style/Android:Theme.Holo.Panel"
      Android:label="@string/title_activity_edit" >
</activity>
  1. Dans la ressource d'activité xml, définissez le remplissage et la largeur appropriés sur la présentation racine. Je l'ai mis à 0 et ajouté une mise en page enfant au début avec alpha pour montrer une partie de l'activité précédente. 
1
Vikram Rao

si vous travaillez avec Material Design vous devez utiliser @Android:style/Theme.Material.Dialog.NoActionBar

0
Asad Mirza