Android中透明背景的对话框
如何在Android中删除对话框中的黑色背景。图片显示了问题所在Android中透明背景的对话框,android,android-dialog,Android,Android Dialog,如何在Android中删除对话框中的黑色背景。图片显示了问题所在 final Dialog dialog = new Dialog(Screen1.this); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(R.layout.themechanger); 添加此代码 dialog.getWindow().setBackgroundDrawable(new ColorDrawable(
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));
或者换成这个:
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
您可以使用:
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
*/
与zGnep相同的解决方案,但使用xml:
android:background="@null"
这是我的方式,你可以试试 我遇到了一个更简单的问题,我提出的解决方案是应用一个透明的背景主题。用你的风格写这些行
<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>
在主清单文件中,对话框活动块内
在对话框活动XML集中添加
android:background= "#00000000"
不知怎的,撒迦利亚的解决方案对我不起作用,所以我用下面的主题来解决这个问题
<style name="DialogCustomTheme" parent="android:Theme.Holo.Dialog.NoActionBar">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:colorBackgroundCacheHint">@null</item>
</style>
享受 在代码中尝试以下操作:
getWindow().setBackgroundDrawableResource(android.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>
我希望能帮助你 对话框弹出窗口填充默认的黑色背景色或主题色,所以您需要将
透明
背景设置到对话框中。请尝试以下代码:-
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_AssignTag.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.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="LoadingIndicatorDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
<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:statusBarColor">@color/black_transperant</item>
<item name="android:layout_gravity">center</item>
<item name="android:background">@android:color/transparent</item>
<!--<item name="android:windowAnimationStyle">@style/MaterialDialogSheetAnimation</item>-->
</style>
而且
在自定义对话框的Xml中:
android:alpha="0.8"
使用此代码它与我一起工作:
Dialog dialog = new Dialog(getActivity(),android.R.style.Theme_Translucent_NoTitleBar);
dialog.show();
我在所有现有答案中发现的一个问题是,利润率没有得到保留。这是因为它们都用纯色覆盖负责边距的
android:windowBackground
属性。然而,我在Android SDK中做了一些挖掘,发现默认的窗口背景是可绘制的,并对其进行了一些修改,以允许透明对话框
首先,将/platforms/android-22/data/res/drawable/dialog\u background\u 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>
之后,转到主题并添加以下内容:
<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>
然后像往常一样构建、创建和显示对话框 这就是我用AlertDialog实现半透明的方法 创建了自定义样式:
<style name="TranslucentDialog" parent="@android:style/Theme.DeviceDefault.Dialog.Alert">
<item name="android:colorBackground">#32FFFFFF</item>
</style>
如果扩展了
对话框frament
类,可以使用以下选项设置主题:
setStyle(DialogFragment.STYLE_NORMAL, R.style.customDialogTheme);
然后在styles.xml文件中创建自定义主题(有关参数,请参见@LongLv的答案)
如果希望在用户触摸对话框外部时关闭对话框,请不要忘记添加
true
。注意:不要使用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()中添加此行:
在样式中设置这些样式代码
<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:彩色/透明
@空的
真的
真的
假的
并简单地在下面的行中将false改为true
<item name="android:backgroundDimEnabled">true</item>
true
它会使您的背景变暗。如果您想破坏对话框的暗背景,请使用此选项
Dialog dialog = new Dialog.Builder(MainActivity.this)
.setView(view)
.create();
dialog.show();dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
dialog.getWindow().setDimAmount(0);
dialog.getWindow().setBackgroundDrawable(新的ColorDrawable(ContextCompat.getColor(ctx,android.R.color.transparent)) 确保
R.layout。由于默认情况下对话框有默认背景色,因此Mechance
没有背景色
您还需要添加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>
真的
真的
@android:彩色/透明
@空的
@空的
Kotlin创建透明背景对话框的方法:
Dialog(activity!!, R.style.LoadingIndicatorDialogStyle)
.apply {
// requestWindowFeature(Window.FEATURE_NO_TITLE)
setCancelable(true)
setContentView(R.layout.define_your_custom_view_id_here)
//access your custom view buttons/editText like below.z
val createBt = findViewById<TextView>(R.id.clipboard_create_project)
val cancelBt = findViewById<TextView>(R.id.clipboard_cancel_project)
val clipboard_et = findViewById<TextView>(R.id.clipboard_et)
val manualOption =
findViewById<TextView>(R.id.clipboard_manual_add_project_option)
//if you want to perform any operation on the button do like this
createBt.setOnClickListener {
//handle your button click here
val enteredData = clipboard_et.text.toString()
if (enteredData.isEmpty()) {
Utils.toast("Enter project details")
} else {
navigateToAddProject(enteredData, true)
dismiss()
}
}
cancelBt.setOnClickListener {
dismiss()
}
manualOption.setOnClickListener {
navigateToAddProject("", false)
dismiss()
}
show()
}
对话框(活动!!,R.style.LoadingIndicator或AlogStyle)
.申请{
//requestWindowFeature(窗口。功能\u无\u标题)
可设置可取消(真)
setContentView(R.layout.define_your_custom_view_id_here)
//访问自定义视图按钮/editText,如下所示.z
val createBt=findviewbyd(R.id.clipboard\u create\u项目)
val cancelBt=findviewbyd(R.id.clipboard\u cancel\u项目)
val clipboard\u et=findviewbyd(R.id.clipboard\u et)
val手动选项=
findViewById(R.id.剪贴板\手动\添加\项目\选项)
//如果要对按钮执行任何操作,请执行以下操作
createBt.setOnClickListener{
//处理你的按钮点击这里
val enteredData=剪贴板_et.text.toString()
if(enteredData.isEmpty()){
Utils.toast(“输入项目详细信息”)
}否则{
navigateToAddProject(输入数据,真)
解雇
}
}
cancelBt.setOnClickListener{
解雇
}
manualOption.setOnClickListener{
navigateToAddProject(“,false)
解雇
}
show()
}
在style.xml中创建LoadingIndicatorDialogStyle,如下所示:
dialog_AssignTag.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.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="LoadingIndicatorDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
<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:statusBarColor">@color/black_transperant</item>
<item name="android:layout_gravity">center</item>
<item name="android:background">@android:color/transparent</item>
<!--<item name="android:windowAnimationStyle">@style/MaterialDialogSheetAnimation</item>-->
</style>
真的
@android:彩色/透明
@空的
真的
@彩色/黑色透明剂
居中
@android:彩色/透明
请显示对话框创建的代码此情况也适用于此处的两行代码:在此处找到最佳答案这将起作用,但仅当您扩展对话框时,这不是一个快速的解决方案,而是一个好的解决方案……或者如果您只想设置对话框的样式,请使用此选项:谢谢!但是,我更喜欢使用dialog.getWindow().setBackgroundDrawable(新的ColorDrawableResource(R.color.transparent))代码>此解决方案有帮助。问题是,宽度将适合屏幕。与普通对话框相比,将没有填充。但是安卓4.1默认处理它,如果我使用的是ALert Dialog呢?如果你在DialogFragment中,只需调用getDialog().getWindow()。。。(创建视图后,例如在onViewCreated回调中)。我更喜欢使用dialog.getWindow().setBackgroundDrawableResource(R.color.transparent)代码>我认为,当你添加一些expl时,它对OP和其他访问者更有帮助
<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>
Dialog(activity!!, R.style.LoadingIndicatorDialogStyle)
.apply {
// requestWindowFeature(Window.FEATURE_NO_TITLE)
setCancelable(true)
setContentView(R.layout.define_your_custom_view_id_here)
//access your custom view buttons/editText like below.z
val createBt = findViewById<TextView>(R.id.clipboard_create_project)
val cancelBt = findViewById<TextView>(R.id.clipboard_cancel_project)
val clipboard_et = findViewById<TextView>(R.id.clipboard_et)
val manualOption =
findViewById<TextView>(R.id.clipboard_manual_add_project_option)
//if you want to perform any operation on the button do like this
createBt.setOnClickListener {
//handle your button click here
val enteredData = clipboard_et.text.toString()
if (enteredData.isEmpty()) {
Utils.toast("Enter project details")
} else {
navigateToAddProject(enteredData, true)
dismiss()
}
}
cancelBt.setOnClickListener {
dismiss()
}
manualOption.setOnClickListener {
navigateToAddProject("", false)
dismiss()
}
show()
}
<style name="LoadingIndicatorDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
<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:statusBarColor">@color/black_transperant</item>
<item name="android:layout_gravity">center</item>
<item name="android:background">@android:color/transparent</item>
<!--<item name="android:windowAnimationStyle">@style/MaterialDialogSheetAnimation</item>-->
</style>