2016-03-30 12 views
3

Ich habe einige Lösungen durch, aber keine lösen mein Problem.Dialog mit abgerundeten Ecke in Android

Ich habe eine benutzerdefinierte DialogFragment erstellt. und Wurzelelement von dialog is cardView. Ich setze cardCornerRadius von cardView.

Dann versuche ich Transparente Dialog zu setzen, weil Hintergrundfarbe auch damit zeigt.

dann versuche ich das Dialog Thema zu setzen wie

<style name="PauseDialog" parent="@style/Theme.AppCompat.Light.Dialog"> 
     <!-- TTheme.AppCompat.Translucent--> 
     <item name="android:windowAnimationStyle">@style/PauseDialogAnimation</item> 
     <!--<item name="android:windowBackground">@android:color/transparent</item>--> 
     <item name="android:windowBackground">@color/transparent</item> 
     <item name="android:colorBackgroundCacheHint">@android:color/transparent</item> 


     <item name="android:windowFrame">@null</item> 
     <item name="android:windowIsFloating">true</item> 
     <item name="android:windowContentOverlay">@null</item> 
     <item name="android:windowTitleStyle">@null</item> 
     <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item> 
     <item name="android:backgroundDimEnabled">false</item> 
     <item name="android:background">@android:color/transparent</item> 
    </style> 

Der Hintergrund ist immer noch da bleibt. Und dann habe ich auch versucht

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

aber immer noch Dialog haben Hintergrund damit verbunden.

Gibt es irgendwelche Arbeiten um. Wie könnte ich es loswerden?

Ich habe erstellt eine DialogFragment und in onCreateDialog

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), 
       R.style.PauseDialog); 
     setStyle(DialogFragment.STYLE_NO_FRAME, R.style.PauseDialog); 

enter image description here

+0

vielleicht eine dumme Frage, aber nur um sicher zu gehen: Wann setzen Sie backgroundDrawable Ihres Dialogs? Es ist wichtig, dies vor setContentView() und show() zu setzen .... – Opiatefuchs

+0

versuchen, Form mit abgerundeten Ecken als Hintergrund hinzufügen –

+0

Bereits versucht, diese Vivek Mishra http://stackoverflow.com/questions/28937106/how-to-make-custom-dialog-with-rounded-corners-in-android – Nepster

Antwort

0

Try Verwendung in Mutter Stil einen No Thema Titelleiste und machen es durchscheinend:

<style name="PauseDialog" parent="@android:style/Theme.NoTitleBar"> 
    ....rest of your style 
<item name="android:windowContentOverlay">@null</item> 
<item name="android:windowIsTranslucent">true</item> 
<item name="android:windowBackground">@android:color/transparent</item> 
<item name="android:windowNoTitle">true</item>  
<item name="android:backgroundDimEnabled">false</item> 
</style> 
+0

zeigt schwarzen Hintergrund und Animation zeigt auch nicht – Nepster

+0

sind u Verwendung "Dialog = neuer Dialog (this, R.style.PauseDialog)" und "dialog.getWindow(). SetBackgroundDrawable (new ColorDrawable (Color.TRANSPARENT));"? – rcorbellini

+0

rcorbelini Ich habe die Frage aktualisiert. und ja, ich rufe AlertDialog so an – Nepster

4

Wenn Sie eine abgerundete Ecke möchten, können Sie versuchen, benutzerdefinierte anzuwenden Form mit XML zu Ihrem benutzerdefinierten Dialogfeld Hintergrund. Der folgende Code wird Ihnen helfen.

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 

    <solid android:color="#FFFFFF" /> 
     <corners 
      android:radius="10dp"/> 

    </shape> 

Sie können cardview als oberstes Element entfernen, da der Dialog über Schatten und Tiefe verfügt. diese Zeile hinzufügen, bevor Sie InhaltAlle zum Dialog

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

Zum einen eine xml erstellen gesetzt in drawable ->dialog_bg.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid 
     android:color="@color/white"/> 
    <corners 
     android:radius="30dp" /> 
    <padding 
     android:left="8dp" 
     android:top="8dp" 
     android:right="8dp" 
     android:bottom="8dp" /> 
</shape> 

legen Sie es als Hintergrund in Ihrem layout.xml

android:background="@drawable/dialog_bg" 

Set die background von dialog bis transparent

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

bearbeiten

Wenn der obige Code nicht funktioniert es einen anderen Weg, dies zu tun ist. Folgen Sie dem Tutorial: http://grishma102.blogspot.in/2014/04/android-custom-dialog-example.html