如何从Android对话框中删除黑色背景。图片显示了问题。
final Dialog dialog = new Dialog(Screen1.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.themechanger);
如何从Android对话框中删除黑色背景。图片显示了问题。
final Dialog dialog = new Dialog(Screen1.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.themechanger);
Answers:
添加此代码
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
或改用这个:
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
dialog.getWindow().setBackgroundDrawable(new ColorDrawableResource(R.color.transparent));
dialog.getWindow().setBackgroundDrawableResource(R.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);
希望对您有所帮助!
我遇到了更简单的问题,我想出的解决方案是应用透明的bachground主题。用您的样式写这些线
<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解决方案对我不起作用,因此我使用以下主题解决了此问题...
<style name="DialogCustomTheme" parent="android:Theme.Holo.Dialog.NoActionBar">
<item name="android:windowBackground">@android: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
*/
对话框弹出会填充默认的黑色背景色或主题色,因此您需要将TRANSPARENT
背景设置为对话框。试试下面的代码:
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();
如果要破坏对话框的深色背景,请使用此
dialog.getWindow().setDimAmount(0);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Objects.requireNonNull(alertDialog.getWindow()).setDimAmount(0); }
我发现所有现有答案的一个问题是没有保留边距。这是因为它们都覆盖了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>
确保newly_created_background_name
用您刚创建的可绘制文件的实际名称替换,并some_transparent_color
用所需的透明背景替换。
之后,我们要做的就是设置主题。在创建时使用此AlertDialog.Builder
:
AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.MyTransparentDialog);
然后像往常一样构建,创建和显示对话框!
这是我为使用AlertDialog实现半透明所做的工作。
创建了一个自定义样式:
<style name="TranslucentDialog" parent="@android:style/Theme.DeviceDefault.Dialog.Alert">
<item name="android:colorBackground">#32FFFFFF</item>
</style>
然后使用以下命令创建对话框:
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.TranslucentDialog);
AlertDialog dialog = builder.create();
就我而言,解决方案的工作方式如下:
dialog_AssignTag.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
并且在自定义对话框的Xml中:
android:alpha="0.8"
在样式中设置这些样式代码
<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>
只需在行下将false更改为true
<item name="android:backgroundDimEnabled">true</item>
它将使您的背景变暗。
注意:请勿使用builder更改背景。
Dialog dialog = new Dialog.Builder(MainActivity.this)
.setView(view)
.create();
dialog.show();dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
改成
Dialog dialog = new Dialog(getActivity());
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(view);
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
dialog.show();
使用Dialog.builder时,没有提供getWindow()
选项。
对于使用自定义对话框和自定义类的任何人,您都需要更改类的透明度,在onCreate()中添加以下行:
getWindow().setBackgroundDrawableResource(android.R.color.transparent);
确保R.layout.themechanger
没有背景色,因为默认情况下对话框具有默认背景色。
您还需要添加 dialog.getWindow().setBackgroundDrawable(newColorDrawable(Color.TRANSPARENT));
最后
<style name="TransparentDialog">
<item name="android:windowIsFloating">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowTitleStyle">@null</item>
</style>