Android中透明背景的对话框

如何从Android的对话框中删除黑色背景。 图片显示的问题。

在这里输入图像说明

final Dialog dialog = new Dialog(Screen1.this); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(R.layout.themechanger); 

添加此代码

  dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); 
 <style name="NewDialog"> <item name="android:windowFrame">@null</item> <item name="android:windowBackground">@android:color/transparent</item> <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">@android:color/transparent</item> </style> 

在java中使用

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

我希望能帮到你!

我遇到了更简单的问题,我想出的解决scheme是应用一个透明的bachground THEME。 在你的样式中写下这些行

  <item name="android:windowBackground">@drawable/blue_searchbuttonpopupbackground</item> </style> <style name="Theme.Transparent" parent="android:Theme"> <item name="android:windowIsTranslucent">true</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">true</item> <item name="android:backgroundDimEnabled">false</item> </style> 

然后添加

 android:theme="@style/Theme.Transparent" 

在你的主清单文件中,在对话活动的块内。

另外在你的对话活动XML集中

  android:background= "#00000000" 

不知怎的,Zacharias解决scheme没有为我工作,所以我已经使用下面的主题来解决这个问题…

 <style name="DialogCustomTheme" parent="android:Theme.Holo.Dialog.NoActionBar"> <item name="android:windowBackground">@color/transparent</item> <item name="android:colorBackgroundCacheHint">@null</item> </style> 

可以将这个主题设置为对话框如下

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

请享用!!

你可以使用:

 setBackgroundDrawable(null); 

方法。以下是文档:

  /** * Set the background to a given Drawable, or remove the background. If the * background has padding, this View's padding is set to the background's * padding. However, when a background is removed, this View's padding isn't * touched. If setting the padding is desired, please use * {@link #setPadding(int, int, int, int)}. * * @param d The Drawable to use as the background, or null to remove the * background */ 

尝试这个:-

 final Dialog dialog = new Dialog(this); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); dialog.setContentView(R.layout.splash); dialog.show(); 

我发现的所有现有答案中的一个问题是,边际不被保留。 这是因为它们都用android:windowBackground覆盖了负责边距的android:windowBackground属性。 不过,我在Android SDK中进行了一些挖掘,发现默认的窗口背景是可绘制的,并修改了一下以允许透明的对话框。

首先,将/platforms/android-22/data/res/drawable/dialog_background_material.xml复制到您的项目中。 或者,只需将这些行复制到一个新的文件中:

 <inset xmlns:android="http://schemas.android.com/apk/res/android" android:inset="16dp"> <shape android:shape="rectangle"> <corners android:radius="2dp" /> <solid android:color="?attr/colorBackground" /> </shape> </inset> 

注意android:color被设置为?attr/colorBackground 。 这是你看到的默认的纯灰色/白色。 为了让自定义样式中的android:background中定义的颜色透明并显示透明度,我们所要做的就是将?attr/colorBackground更改为@android:color/transparent 。 现在看起来像这样:

 <inset xmlns:android="http://schemas.android.com/apk/res/android" android:inset="16dp"> <shape android:shape="rectangle"> <corners android:radius="2dp" /> <solid android:color="@android:color/transparent" /> </shape> </inset> 

之后,转到您的主题并添加以下内容:

 <style name="MyTransparentDialog" parent="@android:style/Theme.Material.Dialog"> <item name="android:windowBackground">@drawable/newly_created_background_name</item> <item name="android:background">@color/some_transparent_color</item> </style> 

确保使用刚创build的可绘制文件的实际名称replacesome_transparent_color ,并将some_transparent_colorreplace为所需的透明背景。

之后,我们需要做的就是设置主题。 创buildAlertDialog.Builder时使用它:

  AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.MyTransparentDialog); 

然后像往常一样build立,创build和显示对话框!

与zGnep相同的解决scheme,但使用xml:

 android:background="@null" 

这就是我用AlertDialog实现半透明的过程。

创build一个自定义样式:

 <style name="TranslucentDialog" parent="@android:style/Theme.DeviceDefault.Dialog.Alert"> <item name="android:colorBackground">#32FFFFFF</item> </style> 

然后创build对话框:

 AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.TranslucentDialog); AlertDialog dialog = builder.create(); 

使用这个代码它与我一起工作:

  Dialog dialog = new Dialog(getActivity(),android.R.style.Theme_Translucent_NoTitleBar); dialog.show(); 
 Window window = d.getWindow(); window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,WindowManager.LayoutParams.FLAG_BLUR_BEHIND); 

这是我的方式,你可以试试!

在你的代码中试试这个:

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

它肯定会工作…在我的情况下…! 我的朋友

在我的情况下解决scheme是这样的:

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

另外在自定义对话框的Xml中:

 android:alpha="0.8" 
 dialog.getWindow().setBackgroundDrawable(null); 

它具有与以下相同的效果:

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