2011-01-21 2 views
12

Как удалить эффект «shadowBox» вокруг диалогового окна, которое исчезает на фоне?Android: диалоговое окно без тени вокруг него

Я знаю, что могу создать как полностью пользовательский вид, но скажем, я хочу, чтобы это было просто. У меня есть xml-макет для диалога только с текстовыми и двумя кнопками, и я хочу остановить выцветание только для этого одного диалога.

ответ

35

Try:

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

Спасибо. Оно работает. LayoutParams должен быть от android.view.WindowManager –

+0

Такая константа устарела для targetSdkVersion = 22 – goRGon

+0

Не работает в Android 4.0+. – Lazy

6

создать style.xml внутри values и положить вещи, как это:

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

И в конце концов, поставить этот стиль в диалоговом окне.

+0

Hm, применил его как style = "@ style/styled_dialog" к linearLayout моего dialog.xml и ничего. – yosh

+0

Какой DialoBox вы используете? Прогресс? или диалоговое окно оповещения? Я использовал его, имея ProgressDialog и указав стиль при его создании. –

+1

@ Sheikh-Aman Я использую диалоговое окно Alert, и я не могу найти способ добавить к нему стиль. – yosh

2

здесь дают образец класса макет

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

Диалог

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

Полезная вещь! Но это не решает затухающий фон. Он удаляет диалоговое окно :) – yosh

4

Просто используйте

dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent); 
Смежные вопросы