2011-01-21 9 views
12

Jak usunąć efekt "shadowBox" w oknie dialogowym, które zanika tło?Android: okno dialogowe bez cienia wokół niego

Wiem, że mogę stworzyć zupełnie niestandardowy widok, ale załóżmy, że chcę zachować prostotę. Mam układ XML dla okna dialogowego z tylko tekstem i 2 przyciskami i chcę zatrzymać przejście tylko dla tego jednego okna dialogowego.

Odpowiedz

35

Spróbuj:

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

Dzięki. To działa. LayoutParams musi pochodzić z android.view.WindowManager –

+0

Stała jest przestarzała dla targetSdkVersion = 22 – goRGon

+0

Nie działa w systemie Android 4.0+. – Lazy

6

tworzyć style.xml wewnątrz values i umieścić rzeczy tak:

<?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> 

I w końcu, umieścić ten styl do okna dialogowego.

+0

Hm, zastosowałem go jako style = "@ style/styled_dialog" do linearLayout mojego pliku dialog.xml i nic. – yosh

+0

Którego DialoBox używasz? jeden postęp? lub okno alarmowe? Używałem go, mając ProgressDialog i określałem styl podczas tworzenia instancji. –

+1

@ Sheikh-Aman Używam okna dialogowego Alert i nie mogę znaleźć sposobu, aby dodać do niego styl. – yosh

2

tutaj dać lekcje pokazowe układ

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(); 
} 

dialogowego

<?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

Przydatna rzecz! Ale to nie rozwiązuje blednącego tła. Usuwa okno dialogowe :) – yosh

4

Wystarczy użyć

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