Transparenter AlertDialog hat schwarzen Hintergrund

Lesezeit: 5 Minuten

Transparenter AlertDialog hat schwarzen Hintergrund
superuserdo

Ich habe einen Brauch AlertDialog Stil, der das macht AlertDialog Kiste durchsichtig. Es funktioniert gut, außer dass, wenn ich mein gewünschtes transparentes Layout in das Warndialogfenster aufblase, es mit einem schwarzen Hintergrund angezeigt wird. Mein Ziel ist es, vollständig transparent zu sein AlertDialog wo es scheint, als ob nur 4 Schaltflächen statt eines Rahmens schweben. Bild eins ist das, was mir der benutzerdefinierte Dialog gibt, Bild zwei ist mein Wunsch oder mein Ziel.

Hier ist der Code zum Custom Dialog

<style name="CustomDialog" parent="android:Theme.Dialog">
    <item name="android:windowFrame">@null</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowTitleStyle">@null</item>
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
    <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
    <item name="android:backgroundDimEnabled">false</item>
    <item name="android:background">@android:color/transparent</item>
</style>

Hier ist, was ich in meinem anrufe onCreate()

AlertDialog.Builder imageDialog = new AlertDialog.Builder(TimeLine.this, R.style.CustomDialog);
inflater = getLayoutInflater();
View view=inflater.inflate(R.layout.tabs, null);
AlertDialog a = imageDialog.create();
a.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
a.setView(view, 0, 0, 0, 0);

a.show();

aktueller Warndialog

Gewünschter AlertDialog

Bearbeiten*
Der Code für das XML-Layout der Registerkarten ist hier
`

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:id="@+id/tabLayout"
    android:background="#000000ff">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Button"
        android:id="@+id/button2"
        android:layout_marginTop="206dp"
        android:layout_below="@+id/button4"
        android:layout_alignStart="@+id/button4" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Button"
        android:id="@+id/button3"
        android:layout_alignTop="@+id/button2"
        android:layout_alignParentStart="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Button"
        android:id="@+id/button4"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:layout_marginTop="100dp" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Button"
        android:id="@+id/button"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="100dp" />
</RelativeLayout>

`

Beim Testen, um zu sehen, was die Ursache des Problems ist, habe ich herausgefunden, dass das Layout transparent ist, denn wenn ich die Hintergrundfarbe des Layouts ändere, ändert sich auch der Warndialog. Wenn das Layout jedoch auf transparent eingestellt ist, scheint das, was sich hinter dem aufgeblasenen Layout befindet, schwarz zu sein. Und deswegen bin ich mir unsicher was ich machen soll oder ob es das ist AlertDialog Einstellungen oder mein Layout-Code.

  • Posten Sie die R.layout.tabs xml

    – Rod_Algonquin

    7. August 14 um 4:30 Uhr

  • @Rod_Algonquin Ich habe den Code hinzugefügt

    – superuserdo

    7. August 14 um 4:35 Uhr

1643038385 223 Transparenter AlertDialog hat schwarzen Hintergrund
Rod_Algonquin

Das Problem ist, dass AlertDialog builder Ist eigentlich nicht gut um transparente Dialoge zu gestalten und wird und wird immer diesen schwarzen Hintergrund, der eigentlich ein Theme dafür ist, stattdessen verwenden Dialog um stattdessen ein transparentes Thema zu erstellen.

Probe:

Dialog alertDialog = new Dialog(this);
alertDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
alertDialog.setContentView(R.layout.tabs);
alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
alertDialog.show();

Verwenden Dialog erfordert keine Themenmanipulation für transparenten Hintergrund, daher ist es im Grunde einfach.

  • Danke schön! Ihre Antwort ist das Ende meines 3-tägigen Versuchs, dieses Problem zu beheben. Perfekt.

    – superuserdo

    7. August 14 um 4:48 Uhr

  • @superuserdo Ich erinnere mich, dass ich diese Frage schon einmal hatte. :))

    – Rod_Algonquin

    7. August 14 um 4:48 Uhr

  • Dies ist die richtige Antwort von allen. Die Verwendung des Warndialogs hat bei mir nicht funktioniert.

    – Tarun

    25. November 14 um 16:06 Uhr


  • @Rod_Algonquin, wie schreibt man Klickereignisse für die Ansichten in dem Layout, das wir als ContentView festgelegt haben?

    – Karthikeyan Ve

    16. Februar 15 um 10:18 Uhr

  • Danke.. Ich blieb bei der Anzeige der weißen Ecke hängen, auch wenn das Hintergrundbild eine transparente Ecke hat.

    – Code

    4. September 15 um 17:32 Uhr

1643038385 438 Transparenter AlertDialog hat schwarzen Hintergrund
Michael Shrestha

Haben Sie versucht, so etwas zu verwenden:

<style name="CustomDialog" parent="@android:style/Theme.Translucent">
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:colorBackgroundCacheHint">@null</item>
    ...
</style>

BEARBEITEN

Versuchen Sie dies in Java-Code

dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));

  • Das Ergebnis ist das gleiche mit diesem Stil.

    – superuserdo

    7. August 14 um 4:39 Uhr

  • Java-Code hat bei mir funktioniert. Das Problem war ein weißer Hintergrund auf Lollipop. Schön!

    – sud007

    16. September 15 um 16:18 Uhr

Diejenigen, die immer noch Probleme haben, benutzerdefinierte transparente Dialoge oder Warndialoge zu erstellen, können diese Kombination verwenden. Ich wollte auch einen benutzerdefinierten Hintergrund zeigen, das hat bei mir funktioniert.

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

Beispiel:-

/**
 * alert dialog
 */

    public class ToolTipView extends AlertDialog {

        public ToolTipView(@NonNull Context context) {
            super(context);
            getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
            getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        }

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.dialog_tool_tip_view);
        }

    }

  • Danke Bruder. Ich wollte den schwachen halbdunklen Hintergrund entfernen, konnte aber keine Antwort finden. Die Funktion getWindow().clearFlags hat den halbtransparenten Teil entfernt.

    – Neo

    3. Dezember 20 um 2:50 Uhr

1643038385 908 Transparenter AlertDialog hat schwarzen Hintergrund
Mehul Joisar

In deinem R.layout.tabs,

Ersetzen

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:id="@+id/tabLayout"
    android:background="#000000ff">

mit

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:id="@+id/tabLayout"
    android:background="@android:color/transparent">

.

619870cookie-checkTransparenter AlertDialog hat schwarzen Hintergrund

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy