2013-07-10 21 views
8

Ich habe einen benutzerdefinierten AlertDialog und ich möchte es Hintergrund völlig transparent machen. Normalerweise die Tätigkeit vollständig transparent zu machen, ich den folgendenAndroid AlertDialog mit transparentem Hintergrund

  • Set Hintergrund #00000000 in dem XML-Layout

  • im Manifest gesetzt android:theme="@android:style/Theme.Holo.Dialog" für die Aktivität.

  • In onCreate add getWindow().setBackgroundDrawable(new ColorDrawable(0)).

    Aber jetzt, wo ich mit einem Dialog zu tun habe, wie erreiche ich Transparenz? Hier

ist der Dialog-Code:

LayoutInflater inflater = getLayoutInflater(); 
    View dialoglayout = inflater.inflate(R.layout.activity_mine1, 
     (ViewGroup) findViewById(R.layout.mine1)); 
    mine1 = new AlertDialog.Builder(this); 
    mine1.setView(dialoglayout); 
    mine1.show(); 

Und mein xml ist nur ein relativeLayout mit anderen Kind Ansichten:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="#00000000" > 

    ... 

</RelativeLayout> 

Hinweis: Ich habe schon an einigen ähnlichen Beiträge sah hier , aber sie scheinen nicht zu funktionieren.

Mein wirklicher Grund ist, dass der Hintergrund, den ich wirklich verwenden möchte, nicht rechteckig ist. Ich bekomme es in einer Aktivität zu arbeiten. Aber ich möchte stattdessen einen Dialog verwenden.

EDIT:

weiter um zu spielen, ich habe diese style.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources xmlns:android="http://schemas.android.com/apk/res/android"> 
<style name="CustomDialog" parent="android:Theme.Holo.Dialog"> 
     <item name="android:windowIsTranslucent">true</item> 
     <item name="android:windowBackground">@android:color/transparent</item> 
    </style> 
</resources> 

Was ich hinzufügen, wie

new AlertDialog.Builder(this, R.style.CustomDialog) 
+0

Attr 'dialogBackground' wird von Eclipse nicht erkannt. –

Antwort

5

Verwenden Sie Dialog statt AlertDialog.Builder und verwenden Sie setContentView anstelle von setView.

8
<style name="CustomAlertDialog" parent="android:style/Theme.Dialog"> 
     <item name="android:windowBackground">@android:color/transparent</item> 
     <item name="android:windowIsFloating">true</item> 
     <item name="android:backgroundDimEnabled">true</item> 
     <item name="android:width">300dip</item> 
     <item name="android:textColor">#FFFFFF</item> 
    </style> 

      Dialog connectionDialog = new Dialog(this, R.style.CustomAlertDialog); 
      connectionDialog.setContentView(set your view here); 
      connectionDialog.show(); 
+0

Ihr vollbringt so viel wie meine eigene 'style.xml'. Der Hintergrund ist kaum transparent; es ist sehr dunkel; Sie müssen wirklich genau hinsehen, um zu sehen, dass es eine schwache Transparenz gibt. Ich suche nach # 00000000. Aus irgendeinem Grund gibt es einen weißen Rand um den Hintergrund herum. –

+0

Breitenattribut 300dip tritt nicht in Kraft. – usman

0

Sieht aus wie seine im Zusammenhang mit android:backgroundDimEnabled und/oder android:backgroundDimAmount in dein Stil. Werfen Sie einen Blick auf diese Antwort für weitere Informationen: Translucent Activity filling the entire screen

Sie können versuchen, android:backgroundDimEnabled auf false einzustellen.

4
connectionDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); 
+0

wie ein Charme – JannGabriel

Verwandte Themen