web-dev-qa-db-fra.com

Appel de la boîte de dialogue Android sans l’effacement de l’arrière-plan

J'ai cette belle vue de dialogue je règle ma classe UserInputDialog à:

    <LinearLayout Android:id="@+id/LinearLayout01" 
    Android:layout_width="fill_parent" 
    Android:layout_height="fill_parent" 
    Android:orientation="vertical"
    xmlns:Android="http://schemas.Android.com/apk/res/Android">

        <TextView
        Android:id="@+id/nameMessage"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:text="What is your name Captain?"
        >
        </TextView>
        <EditText
        Android:id="@+id/nameEditText"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:textSize="18sp"
        >
        </EditText>
    <LinearLayout Android:id="@+id/LinearLayout02" Android:layout_width="fill_parent" Android:layout_height="wrap_content" 
        Android:layout_gravity="center_horizontal">
    <Button
        Android:id="@+id/okButton"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="OK">
        </Button>
        <Button Android:id="@+id/cancelButton"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="Cancel">
        </Button>               
    </LinearLayout>
</LinearLayout>

Je veux que ma boîte de dialogue apparaisse, mais que l'arrière-plan ne disparaisse pas. Est-ce possible? Parce que la vue qui appelle cette boîte de dialogue a un arrière-plan neato, j'aimerais qu'elle soit affichée en arrière-plan de la boîte de dialogue.

J'ai trouvé ceci en ligne:

<style name="doNotDim" parent="@Android:style/Theme.Dialog">
    <item name="Android:backgroundDimAmount">0</item>
</style >

mais pas sûr de savoir comment appliquer cela à mon dialogue? J'ai une classe appelée public class UserInputDialog extends Dialog implements OnClickListener. Il définit sa vue de contenu sur la disposition décrite ci-dessus.

Je pense que je le fais bien, mais je ne sais pas comment ajouter ce style pour que je ne puisse PAS atténuer l'arrière-plan. 

Question secondaire: pouvez-vous modifier l'apparence de votre boîte de dialogue (par exemple en affichant une image ou une icône avec votre texte) en utilisant des thèmes?

31
Codejoy

Créez un fichier res/values ​​/ styles.xml et ajoutez-le.

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="Theme.DoNotDim" parent="Android:Theme">
    <item name="Android:backgroundDimEnabled">false</item>
  </style>
</resources>

Et appliquez le thème à votre activité.

<activity Android:name=".SampleActivity" Android:theme="@style/Theme.DoNotDim">
30
Robby Pond

Vous pouvez également supprimer l’effet dim par code avec les éléments suivants:

dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
157
Andrewx2

Créez un style personnalisé et placez-le dans votre dossier de valeurs

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="YourCustomStyle" parent="Android:Theme">
    <item name="Android:backgroundDimEnabled">false</item>
  </style>
</resources> 

Pour définir un style pour un dialogue individuel, vous pouvez utiliser

Dialog dialog = new Dialog(context, R.style.YourCustomStyle);
5
John P.

Pour afficher une boîte de dialogue comme TrueCaller , faites ceci:

Dans le fichier styles.xml.

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="myBackgroundStyle" parent="Android:Theme.Dialog">
    <item name="Android:backgroundDimEnabled">false</item>
  </style>
</resources>

Dans AndroidManifest.xml faites ceci:

<activity Android:name=".SampleActivity" Android:theme="@style/myBackgroundStyle">
1
activesince93