2011-01-21 12 views
12

Come rimuovere questo effetto "shadowBox" attorno alla finestra di dialogo che sfuma lo sfondo?Android: finestra di dialogo senza ombra attorno ad esso

So che posso creare come vista totalmente personalizzata ma diciamo che voglio mantenerlo semplice. Ho un layout xml per la finestra di dialogo con solo textView e 2 pulsanti e voglio interrompere la dissolvenza solo per questa finestra di dialogo.

risposta

35

Prova:

dialog.getWindow().clearFlags(LayoutParams.FLAG_DIM_BEHIND); 
+8

Grazie. Funziona. LayoutParams deve provenire da android.view.WindowManager –

+0

Tale costante è deprecata per targetSdkVersion = 22 – goRGon

+0

Non funziona su Android 4.0+. – Lazy

6

creare style.xml all'interno values e mettere le cose in questo modo:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<style name="progress_dialog"> 
    <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">#00ffffff</item> 
</style> 

E alla fine, mettere questo stile al vostro finestra di dialogo.

+0

Hm, applicato come style = "@ style/styled_dialog" a linearLayout del mio dialog.xml e nulla. – yosh

+0

Quale DialoBox stai usando? uno progresso? o una finestra di dialogo di avviso? L'ho usato mentre avevo un ProgressDialog e ho specificato lo stile mentre lo istanziavo. –

+1

@ Sheikh-Aman Sto usando la finestra di dialogo degli avvisi e non riesco a trovare il modo in cui aggiungere lo stile ad esso. – yosh

2

qui dare alla classe del campione di layout

public void showDialog() { 

    Dialog dialog = new Dialog(this); 
    Window window = dialog.getWindow(); 
    window.setBackgroundDrawableResource(android.R.color.transparent); 
    window.requestFeature(window.FEATURE_NO_TITLE); 

    dialog.setContentView(R.layout.sample); 
    ImageView imggameover, imgplayagain; 
    imggameover = (ImageView) dialog.findViewById(R.id.gameover); 
    imgplayagain = (ImageView) dialog.findViewById(R.id.playagain); 
    imgplayagain.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      startActivity(new Intent(getApplicationContext(), random.class)); 
      onStop(); 
      finish(); 
     } 
    }); 
    dialog.show(); 
} 

Dialog delle

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/gameoverlayout" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@android:color/transparent" 
    > 
    <ImageView 
     android:id="@+id/gameover" 
     android:layout_width="225dip" 
     android:layout_height="160dip" 
     android:background="@drawable/gameover" 
     ></ImageView> 
    <ImageView 
     android:id="@+id/playagain" 
     android:layout_width="160dip" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="100dip" 
     android:layout_marginTop="100dip" 
     android:background="@drawable/playagain" 
     ></ImageView> 
</RelativeLayout> 
+0

Cosa utile! Ma questo non risolve lo sfondo sbiadito. Rimuove la finestra di dialogo :) – yosh

4

Basta usare

dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent); 
Problemi correlati