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?
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).
Pour AppCompat, ajoutez
Android:theme="@style/Theme.AppCompat.Dialog.Alert"
à l'activité dans AndroidManifest
La classe Dialog est parfaite pour cela. vous pouvez trouver des exemples simples ici .
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"
Pour appcompat, cela peut être utilisé dans le manifeste
<activity Android:theme="@style/Theme.Base.AppCompat.Dialog.FixedSize" >
</activity>
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>
0
et ajouté une mise en page enfant au début avec alpha pour montrer une partie de l'activité précédente. si vous travaillez avec Material Design vous devez utiliser @Android:style/Theme.Material.Dialog.NoActionBar