it-swarm.com.de

Android-Dialog aufrufen, ohne den Hintergrund auszublenden

Ich habe diese schöne Dialogansicht, in der ich meine UserInputDialog-Klasse auf Folgendes festgelegt habe:

    <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>

Ich möchte, dass mein Dialog angezeigt wird, aber der Hintergrund nicht ausgeblendet wird. Ist das möglich? Da die Ansicht, die diesen Dialog aufruft, einen netten Hintergrund hat, möchte ich als Hintergrund für den Dialog angezeigt werden.

Ich habe das online gefunden:

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

aber nicht sicher, wie ich das auf meinen Dialog anwenden kann? Ich habe eine Klasse namens public class UserInputDialog extends Dialog implements OnClickListener. Es setzt seine Inhaltsansicht auf das oben beschriebene Layout.

Ich denke, ich mache das alles richtig, nur nicht sicher, wie ich diesen Stil hinzufügen sollte, damit ich den Hintergrund NICHT ausblenden kann. 

Sekundäre Frage: Können Sie durch die Verwendung von Themen ein neues Aussehen in Ihrem Dialog erhalten (indem Sie beispielsweise ein Bild oder ein Symbol mit Ihrem Text dort anzeigen lassen)?

31
Codejoy

Erstellen Sie eine res/values ​​/ styles.xml-Datei und fügen Sie diese hinzu.

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

Und wende das Thema auf deine Aktivität an.

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

Sie können den Dimmeffekt auch mithilfe von Code mit folgendem Code entfernen:

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

Erstellen Sie einen benutzerdefinierten Stil und platzieren Sie ihn in Ihrem Werteordner

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

Um einen Stil für ein einzelnes Dialogfeld festzulegen, können Sie verwenden

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

Zum Anzeigen von Dialogfeldern wie TrueCaller machen Sie Folgendes:

In styles.xml-Datei.

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

In AndroidManifest.xml mach das:

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