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_color
replace为所需的透明背景。
之后,我们需要做的就是设置主题。 创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));