2012-01-12 17 views
20

Ho un'attività che è con la Theme.Transparent tema che è:rimuovere bordo, padding da Dialog

<style name="Theme.Transparent" parent="android:Theme.Dialog"> 
    <item name="android:windowIsTranslucent">true</item> 
    <item name="android:windowNoTitle">false</item> 
    <item name="android:windowIsFloating">true</item> 
    <item name="android:backgroundDimEnabled">false</item> 
    <item name="android:gravity">top</item> 
</style> 

sto cercando di sbarazzarsi del confine e l'imbottitura intorno ad esso .. voglio per riempire l'orizzontale dello schermo. e nessun bordo grigio. si prega di aiuto :) enter image description here

risposta

71

Assicurarsi di creare il dialogo referenziare la tua tema personalizzato:

Dialog dialog = new Dialog(this, R.style.MyDialogTheme); 

vostro tema personalizzato ha la necessità di riempire lo schermo e disabilitare un paio di Android framework defaults:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="MyDialogTheme" parent="android:Theme.Dialog"> 
     <!-- Fill the screen --> 
     <item name="android:layout_width">fill_parent</item> 
     <item name="android:layout_height">fill_parent</item> 

     <!-- No backgrounds, titles or window float --> 
     <item name="android:windowBackground">@null</item> 
     <item name="android:windowNoTitle">true</item> 
     <item name="android:windowIsFloating">false</item>  

     <!-- Just to prove it's working --> 
     <item name="android:background">#ff0000</item> 
    </style> 

</resources> 
+0

GRAZIE! :) ​​@ null ha fatto il trucco! Posso solo assegnare il premio in 17 ore. ma lo farò. molte grazie. – Guy

+0

Felice di aiutare; sorpreso che nessun altro aveva risposto a questo. Non è certamente ovvio, ma controllare la fonte Android su github può aiutare a capire cosa sta succedendo di default! –

+0

Vorrei poterlo revocare due volte. Nota per fare capolino: annullare la finestraBackground è l'unico modo per far sì che la finestra di dialogo visualizzi FLUSH, ovvero senza alcun accenno alla vista. David, rock. – HappyKatz

11

Come sopra ma facendolo in codice anziché in xml ha funzionato per me.

getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 
+0

Ho scoperto che in questo modo non funziona come la risposta accettata. In questo modo, basta sfocare qualsiasi padding attorno alla finestra di dialogo, ma in realtà non rimuove il padding. Questo è un problema quando l'utente fa clic intorno alla finestra di dialogo per cancellarlo ma non sarà cancellato perché il padding è ancora lì ma trasparente. –

+0

Grazie mille! Questo lavoro per me! – mghhgm

+0

Grande. Grazie uomo – FaisalAhmed

5

Impostare la larghezza e l'altezza in modo che corrispondano al contenitore principale.

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    WindowManager.LayoutParams wmlp = dialog.getWindow() 
      .getAttributes(); 
    wmlp.width = android.view.WindowManager.LayoutParams.MATCH_PARENT; 
    wmlp.height = android.view.WindowManager.LayoutParams.WRAP_CONTENT; 
+0

Perfetto, rispondi! :) –

Problemi correlati